我在控制台上对此进行了测试:
[] || 1 # => []
它不返回退出的值,而不返回[]
吗?我可以将其更改为三元运算符,它可以正常工作,但是为什么上述条件不起作用?
答案 0 :(得分:4)
由于catch
在Ruby中是真实值,因此表达式的第二部分从不执行,因此它的总值为do
。在Ruby中,[]
和[]
并不真实。
哦,无论如何,您不需要。如果数组为空,false
将返回一个空数组。
nil
答案 1 :(得分:3)
||
的确切语义是:
nil
或false
,请返回nil
或false
,则返回第二个表达式因此,由于[]
是真实的,如@Ursus所述,它将求值为[]
。