| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Ruby: Общие вопросы > Получение первого элемента массива по критерию |
| Автор: rubyfan 5.10.2009, 15:32 | ||||
| Всем привет, задача такая - пропустить массив элементов через метод, вернуть первый элемент, который удовлетворяет критерию, удаляя при этом все встретившиеся невалидные элементы. Написал пример на php для наглядности:
Вот код на руби, который я пытался написать, видимо что-то упустил, так как конечный массив содержит непонятную последовательность элементов:
|
| Автор: fixxer 5.10.2009, 22:16 | ||
|
| Автор: doomik 5.10.2009, 22:19 | ||
Можно:
При удалении элемента из списка ( arr.delete() ) все следующие элементы сдвигаются в лево, поэтому вместо [1, 2, nil, 3, 4...] у нас получается [1, 2, 3, 4]. список: 1 2 3 4 5 ^ индекс: [0] после выполнение arr.delete(1) список: 2 3 4 5 ^ индекс: [0] [1] [2] [3] После этого each передаёт следующий элемент в блок, что значит по индексу 1 т.к предыдущий был 0. список: 2 3 4 5 ^ индекc: [1] Здесь у нас перескок. Поэтому некоторые элементы не удаляются. Вроде как то так. |
| Автор: rubyfan 6.10.2009, 01:11 |
| doomik, в цикле/итерации в руби нельзя удалять элементы |
| Автор: Goganchic 13.10.2009, 13:48 |
Извини, а почему говоришь нельзя в руби удалять элементы в цикле? |
| Автор: source777 13.10.2009, 22:34 |
| Наверно потому, что он не понял то, что ему doomik старался объяснить. |
| Автор: Goganchic 14.10.2009, 19:07 |
| source777, а, ну ладно тогда, просто я уже год как удаляю, а тут бабац и нельзя, вот я и решил узнать что я делаю не так |