Tips & Tricks: PHP, Rails, Nginx, Apache, Passanger, MySQL, PgSQL, RabbitMQ, Memcached, …

Здесь со временем будут появляться странности или неожиданности синтаксиса или просто то, что вызывает недоумение.


1. Страности с return

Изначально это выглядело вполне нормально:

_cookies = if
  1.   …
  2. elsif
  3.   return 'foo'
  4. else
  5.   …
  6. end

но в итоге:

Exception encountered: #<имя файла>: void value expression>

если вам точно так нужно, можно схитрить:

_cookies = if
  1.   …
  2. elsif
  3.   return 'foo'
  4.   'fake value'
  5. else
  6.   …
  7. end

тоже можно встретить в другой ситуации:

def go
  1.   a = true
  2.   b = nil
  3.   return a.nil? or b.nil?
  4. end

а вот так работает:

def go
  1.   a = true
  2.   b = nil
  3.   return(a.nil? or b.nil?)
  4. end

как я понял, здесь всё дело в приоритете операторов.

Alex Rahalevich