And this one attempts to do the same with numbered params:
def dumper(bnd)
puts bnd.local_variable_get('_1')
puts bnd.eval '_1 * 10'
end
[1,2].each do
some = _1 # without this line even local_variable_get won't work, still it may be in any place of block
dumper(binding)
end
But eval wont ever work and this necessity for using _1 so binding could see it may be confusing as well.
@ko1 (Koichi Sasada) said that it is difficult to retrieve _1 afterwards due to the current implementation limitation, since the actual arguments may be dropped by optimization when a block that does not accept formal arguments is called.
Also, @znz (Kazuhiro NISHIYAMA) pointed out that the meta-programming API to read out only _1 is somewhat unreasonable, since the meaning of _1 depends on the presence of _2.
{ 1 => "A" }.each do
p _1 #=> [1, "A"]
end
{ 1 => "A" }.each do
p _1 #=> 1
_2
end