三元评估需要参数化吗?

时间:2012-10-16 00:36:25

标签: ruby ternary-operator

似乎如果我将代码放入我的三元评估中,它就会失败,但放置truefalse就可以了。

这是我的代码:

>test = [nil]
=> [nil]

>test.any? ? puts "AAA" : puts "BBB"
SyntaxError: (irb):16: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('
test.any? ? puts "AAA" : puts "BBB"
                  ^
(irb):16: syntax error, unexpected ':', expecting $end
test.any? ? puts "AAA" : puts "BBB"

>test.any? ? true : false
=> false

>test << 1
=> [nil, 1]

>test.any? ? true : false
=> true


>test.any? ? puts "AAA" : puts "BBB"
SyntaxError: (irb):14: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('
test.any? ? puts "AAA" : puts "BBB"
                  ^
(irb):14: syntax error, unexpected ':', expecting $end
test.any? ? puts "AAA" : puts "BBB"
                        ^

1 个答案:

答案 0 :(得分:3)

你需要括号。

>> test.any? ? puts("AAA") : puts("BBB")
BBB
=> nil

你应该避免在内联函数中使用无括号调用。