什么是Ruby语言中的_ | _?

时间:2015-07-09 14:04:18

标签: ruby irb

我看过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 

这么奇怪的行为。那么这件事是什么,应该做些什么呢?

1 个答案:

答案 0 :(得分:5)

这是三个令牌。 _|_,它仅适用于IRB或定义_的其他环境。

此:

puts _|_

......与此相同......

puts _ | _

...这是变量_与其自身的简单按位OR。

我能想到这样做的唯一原因是,如果您需要一个真正的布尔值,它会将nil转换为false,而不仅仅是一个假值:

irb(main):001:0> nil | nil
=> false

否则,a | a对于支持a的类型始终为|,并且内置类型为notable exception