У меня есть вопрос относительно ключевых слов и /&/= в Ruby.
В документах ruby говорится, что приоритет для указанных ключевых слов: (1) & &, (2) =, (3) и.
У меня есть этот фрагмент кода, который я написал:
def f(n)
n
end
if a = f(2) and b = f(4) then
puts "1) #{a} #{b}"
end
if a = f(2) && b = f(4) then
puts "2) #{a} #{b}"
end
Вывод:
1) 2 4 [Ожидается]
2) 4 4 [ Почему?]
По какой-то причине использование && заставляет а и b оценивать до 4?