Здесь со временем будут появляться странности или неожиданности синтаксиса или просто то, что вызывает недоумение.
1. Страности с return
Изначально это выглядело вполне нормально:
_cookies = if
-
…
-
elsif
-
return 'foo'
-
else
-
…
-
end
но в итоге:
Exception encountered: #<имя файла>: void value expression>
если вам точно так нужно, можно схитрить:
_cookies = if
-
…
-
elsif
-
return 'foo'
-
'fake value'
-
else
-
…
-
end
тоже можно встретить в другой ситуации:
def go
-
a = true
-
b = nil
-
return a.nil? or b.nil?
-
end
а вот так работает:
def go
-
a = true
-
b = nil
-
return(a.nil? or b.nil?)
-
end
как я понял, здесь всё дело в приоритете операторов.