括号内有多行

时间:2015-12-03 16:45:32

标签: ruby

以下多行条件语句返回意外结果。

if (false and
false and
false
true)
  puts 123
end
# => 123

注意缺失的情况。想知道为什么ruby解释器在这种情况下没有检测到语法问题。

2 个答案:

答案 0 :(得分:8)

那里没有语法错误。

换行符开始一个新表达式,与分号(;)完全相同。

(false and false and false; true)
# => true

此运算符类似于C和C ++中的comma operator

  

一个二元运算符,它计算第一个操作数并丢弃结果,然后计算第二个操作数并返回该值

...与do-form in Clojure类似:

  

按顺序计算表达式并返回最后一个的值。

答案 1 :(得分:3)

单独评估单独行中的语句。简单地说,返回括号中的最后一行(即true)。