Каков «правильный» способ перебора массива в Ruby? - PullRequest
315 голосов
/ 22 ноября 2008

PHP, несмотря ни на что, довольно хорош в этом смысле. Нет никакой разницы между массивом и хэшем (возможно, я наивен, но это, очевидно, мне подходит), и для итерации либо вы просто делаете

foreach (array/hash as $key => $value)

В Ruby есть множество способов сделать это:

array.length.times do |i|
end

array.each

array.each_index

for i in array

Хэши имеют больше смысла, так как я просто всегда использую

hash.each do |key, value|

Почему я не могу сделать это для массивов? Если я хочу запомнить только один метод, думаю, я могу использовать each_index (так как он делает доступными и индекс, и значение), но раздражает необходимость делать array[index] вместо value.


Да, я забыл про array.each_with_index. Однако, этот отстой, потому что он идет |value, key| и hash.each идет |key, value|! Разве это не безумие?

Ответы [ 11 ]

2 голосов
/ 09 января 2014

Правильный путь - это тот, который вам удобнее всего, и который делает то, что вы хотите, чтобы он делал. В программировании редко бывает один «правильный» способ делать вещи, чаще всего есть несколько способов выбора.

Если вас устраивает определенный способ действий, просто делайте это, если он не работает - тогда пришло время найти лучший путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...