Допустим, у меня есть функция
def odd_or_even n
if n%2 == 0
return :even
else
return :odd
end
end
А у меня был простой перечислимый массив
simple = [1,2,3,4,5]
И я проверил его по карте с моей функцией, используя блок do-end:
simple.map do
|n| odd_or_even(n)
end
# => [:odd,:even,:odd,:even,:odd]
Как я мог бы сделать это без, скажем, определения функции в первую очередь? Например,
# does not work
simple.map do |n|
if n%2 == 0
return :even
else
return :odd
end
end
# Desired result:
# => [:odd,:even,:odd,:even,:odd]
не является допустимым ruby, и компилятор злится на меня за то, что я даже думаю об этом. Но как бы я реализовал эквивалентную вещь, которая работает?
редактировать
На самом деле, решение моей проблемы имеет для меня гораздо меньшее значение, чем мотивация / обоснование, чтобы помочь мне понять, как работают блоки ruby