![]() |
|
|
![]()
|
|
| rubyfan |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
Всем привет,
задача такая - пропустить массив элементов через метод, вернуть первый элемент, который удовлетворяет критерию, удаляя при этом все встретившиеся невалидные элементы. Написал пример на php для наглядности:
Вот код на руби, который я пытался написать, видимо что-то упустил, так как конечный массив содержит непонятную последовательность элементов:
|
||||
|
|||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: нет Всего: 27 |
Это сообщение отредактировал(а) fixxer - 5.10.2009, 22:17 -------------------- ![]() |
|||
|
||||
| doomik |
|
|||
![]() Одинокий волк ![]() ![]() Профиль Группа: Участник Сообщений: 360 Регистрация: 25.10.2005 Где: #vingrad Репутация: нет Всего: 15 |
Можно:
При удалении элемента из списка ( 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] Здесь у нас перескок. Поэтому некоторые элементы не удаляются. Вроде как то так. Это сообщение отредактировал(а) doomik - 5.10.2009, 22:22 -------------------- "Единственный способ изучать новый язык программирования - писать на нем программы." - Brian Kernighan Remember, st1ng3r /server irc.ircline.ru /j #vingrad |
|||
|
||||
| rubyfan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.10.2009 Репутация: нет Всего: нет |
doomik, в цикле/итерации в руби нельзя удалять элементы
|
|||
|
||||
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
Извини, а почему говоришь нельзя в руби удалять элементы в цикле? |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Наверно потому, что он не понял то, что ему doomik старался объяснить.
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
source777, а, ну ладно тогда, просто я уже год как удаляю, а тут бабац и нельзя, вот я и решил узнать что я делаю не так
|
|||
|
||||
![]()
|
| Правила форума "Ruby: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Ruby: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |