数组返回的是布尔值,而不是三元运算符分配的值
和代码...
arr = []
arr << true == false ? 'a' : 'b'
# Expecting, the output of arr to be ['b']. But instead, I was getting [true]
为什么会这样?
要获得正确的值,我必须这样做。
arr << if true == false
'a'
else
'b'
end
# and also, = also works fine
arr = true == false ? 'a' : 'b' # arr has 'b'
为什么使用三元运算符时行为会有所不同?
答案 0 :(得分:16)
这是由于Ruby's operator precedence。运算符<<
的优先级高于三元运算符。您的示例可以通过修改以下代码来解决:
arr = []
arr << (true == false ? 'a' : 'b')
答案 1 :(得分:1)
谢谢大家的帮助,我喜欢iGian的解决方案,即没有括号。
arr <<= true == false ? 'a' : 'b'