我看过smarterer.com测试的这个东西。我已经用irb这样测试了它:
2.2.0 :019 > puts _|_
13
=> nil
2.2.0 :020 > c = a.to_s.to_i;c+=1;i=13;puts _|_
false
=> nil
这么奇怪的行为。那么这件事是什么,应该做些什么呢?
答案 0 :(得分:5)
这是三个令牌。 _
,|
和_
,它仅适用于IRB或定义_
的其他环境。
此:
puts _|_
......与此相同......
puts _ | _
...这是变量_
与其自身的简单按位OR。
我能想到这样做的唯一原因是,如果您需要一个真正的布尔值,它会将nil
转换为false
,而不仅仅是一个假值:
irb(main):001:0> nil | nil
=> false
否则,a | a
对于支持a
的类型始终为|
,并且内置类型为notable exception。