为什么“ ||”运算符返回'[]'?

时间:2018-10-10 14:34:15

标签: ruby

我在控制台上对此进行了测试:

[] || 1 # => []

它不返回退出的值,而不返回[]吗?我可以将其更改为三元运算符,它可以正常工作,但是为什么上述条件不起作用?

2 个答案:

答案 0 :(得分:4)

由于catch在Ruby中是真实值,因此表达式的第二部分从不执行,因此它的总值为do。在Ruby中,[][]并不真实。

哦,无论如何,您不需要。如果数组为空,false将返回一个空数组。

nil

答案 1 :(得分:3)

||的确切语义是:

  1. 如果第一个表达式不是nilfalse,请返回
  2. 如果第一个表达式是nilfalse,则返回第二个表达式

因此,由于[]是真实的,如@Ursus所述,它将求值为[]