在Ruby中,如何使_ | _工作?

时间:2015-05-23 14:50:30

标签: ruby irb puts

我对于sizeof(stack->head)在Ruby中的工作原理感到困惑。如果键入变量然后调用该语句

size->head

您将获得变量的名称,后跟nil

puts _|_

但是,如果再次输入,则会出现错误

3
puts _|_

它似乎不像以美元符号开头的那些类似Perl的变量之一。

这个奇怪的符号在世界上是什么意思,它是如何运作的?

4 个答案:

答案 0 :(得分:6)

控制台中的下划线(IRB或pry)代表上一个命令的结果。所以

3
=> 3
puts _|_
3
=> nil

上面的puts语句等同于

puts 3 <bit-wise or> 3

puts 3|3等于puts 3

由于puts返回nil,当您重复puts _|_时,它就变为

puts nil|nil

...这是puts false

答案 1 :(得分:3)

_是一个ruby特殊变量,用于获取前一个表达式的结果。

irb(main):030:0> 3
=> 3
irb(main):031:0> _
=> 3
irb(main):032:0> _.to_s
=> "3"
irb(main):033:0> _
=> "3"

名称以小写字母(a-z)或下划线(_)开头的ruby变量是局部变量或方法调用。未初始化的实例变量的值为nil。

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

答案 2 :(得分:3)

在ruby中_是有效的标识符。

IRB _中包含最后一个表达式的值。

2.1.5 :001 > 100
 => 100
2.1.5 :002 > _
 => 100

答案 3 :(得分:0)

_是一个ruby特殊变量,这个变量存储前一个表达式/命令的输出,所以当你这样做时:

1.9.3-p0 :043 > 3
 => 3

&#39; _&#39;包含值3,因为前一个表达式的返回值是3.当您使用puts时,如下所示:

1.9.3-p0 :045 > puts _|_
3
 => nil

其返回值为nil。下次执行 | 的时间如下:

1.9.3-p0 :049 > _|_
 => false

它返回false,因为它与下面的表达式相同:

1.9.3-p0 :050 > nil|nil
 => false

这就是为什么把 | 返回false。