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

Luc*_*sta 25 ruby irb

只是好奇它.

如果您打开IRB并输入_,您将获得nil响应:

irb(main):001:0> _
=> nil
Run Code Online (Sandbox Code Playgroud)

你可以修改它的值:

irb(main):002:0> _ = 'some value'
irb(main):003:0> _
=> "some value"
Run Code Online (Sandbox Code Playgroud)

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

irb(main):004:0> foo_bar = 'other value'
irb(main):005:0> _
=> "other value"
Run Code Online (Sandbox Code Playgroud)

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

Inn*_*ker 37

irb用于_指代上次计算的表达式的值.因此,_即使您不在上一行中使用它,您也会看到更改:)


Reg*_*ieB 17

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

2.0.0p353 :001 > 4
 => 4 
2.0.0p353 :002 > 3 + _
 => 7 
Run Code Online (Sandbox Code Playgroud)