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

What is it _|_ in Ruby language?

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

如此奇怪的行为。那么这是什么东西,它应该做什么?

三个令牌。 _|_,且仅在IRB或其他定义了_的环境下有效。

这个:

puts _|_

...与此相同...

puts _ | _

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

我能想到这样做的唯一原因是它会把 nil 变成 false 在你需要一个真正的布尔值的情况下,而不仅仅是一个虚假的值:

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

否则,对于支持 | 的类型,a | a 将始终是 a,某些内置类型的