对此感到好奇。
如果您打开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"
为什么呢?这是一个设计决定吗?
答案 0 :(得分:36)
irb
使用_
来引用上次计算的表达式的值。因此,即使您未在上一行中使用它,您也会看到_
已更改:)
答案 1 :(得分:16)
在irb中,_
返回上一个操作的结果。因此,在开启新的irb会话时_
将等于零,因为之前没有操作
2.0.0p353 :001 > 4
=> 4
2.0.0p353 :002 > 3 + _
=> 7