Ruby 中带有“_”(下划线)的奇怪行为

Strange behavior with '_' (underscore) in Ruby

只是好奇

如果您打开 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"

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

irb 使用 _ 来引用最后计算的表达式的值。所以你会看到 _ 改变了,即使你没有在前一行中使用它 :)

在irb中,_ returns前一个操作的结果。因此,在打开一个新的 irb 会话时,_ 将等于 nil,因为之前没有操作

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