Вот мой код:Ruby проверяет только первый элемент булевого выражения?
array = ["b", "c", "a", "e", "d", "g", "i", "f"]
array.each_index do |letter|
if array[letter] == ("a" || "e" || "i" || "o" || "u")
puts "found #{array[letter]}"
end
end
Я бы ожидать, что она вернется так:
found a
found e
found i
, но вместо этого я получаю только
found a
Более того, если бы я изменить порядок элементы внутри() в строке 3, например как этот
if array[letter] == ("e" || "a" || "i" || "o" || "u")
код возвращает found e
вместо found a
.
Я думаю, что я понимаю проблему. Ruby проверяет только array
на первый элемент внутри(). Но может ли кто-нибудь объяснить, почему это так? Я ожидаю, что он проверит их всех.
Плюс '||' короткое замыкание, поэтому вам не нужно выходить за пределы '(" a "|| (...))'. – pjs
Я ожидаю, что комментарий @ pjs направлен на ваш выбор слова «оценивает». –