irbでのアンダースコアが便利だ

irb(main):018:0> FooBar = Struct.new(:foo, :bar)
=> FooBar
irb(main):019:0> FooBar.new(1, 2)
=> #<struct FooBar foo=1, bar=2>
irb(main):020:0> _.foo
=> 1


なんだこのアンスコ?


どうやら、直前に評価されたものを格納しておいているみたい。

irb(main):001:0> _
nil
irb(main):002:0> 1
1
irb(main):003:0> lambda{|x| x+1}
#<Proc:0x00365b78@(irb):3>
irb(main):004:0> _.call(1)
2
irb(main):005:0> _
2
irb(main):006:0> def hoge; end
nil
irb(main):007:0> _
nil
irb(main):008:0> 


おぉーこりゃなかなか便利だ。irb特有の機能。