Ruby中使用'_'(下划线)的奇怪行为

时间:2017-01-04 19:57:13

标签: ruby irb

对此感到好奇。

如果您打开IRB并输入_,则会收到nil作为回复:

irb(main):001:0> _
=> nil

您可以修改其值:

irb(main):002:0> _ = 'some value'
irb(main):003:0> _
=> "some value"

但是如果使用_创建新变量,则会修改其值:

irb(main):004:0> foo_bar = 'other value'
irb(main):005:0> _
=> "other value"

为什么呢?这是一个设计决定吗?

2 个答案:

答案 0 :(得分:36)

irb使用_来引用上次计算的表达式的值。因此,即使您未在上一行中使用它,您也会看到_已更改:)

答案 1 :(得分:16)

在irb中,_返回上一个操作的结果。因此,在开启新的irb会话时_将等于零,因为之前没有操作

2.0.0p353 :001 > 4
 => 4 
2.0.0p353 :002 > 3 + _
 => 7