Ruby三元运算符结构

时间:2013-05-18 22:25:06

标签: ruby ternary

puts bool ? "true" : "false"

是正确的,但是

bool ? puts "true" : puts "false"

不是。有人可以向我解释为什么会这样吗?

旁注:

bool ? ( puts "true" ) : ( puts "false" )

也可以。

1 个答案:

答案 0 :(得分:5)

如果不将括号放在方法调用上,Ruby假定您希望行末的所有内容都成为参数。也就是说,这些调用是等效的(并且无效):

bool ? puts "true" : puts "false"
bool ? puts("true" : puts "false")