我在Arch Linux上使用此版本的Ruby。我也嘗試了Ruby 1.9中的第一個代碼片段,它有相同的結果。具有塊本地參數的多個內核#local_variables條目
ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
uname -a
Linux ryantm0j132 3.12.7-2-ARCH #1 SMP PREEMPT Sun Jan 12 13:09:09 CET 2014 x86_64 GNU/Linux
下面這三個片段是單獨的程序。
當我使用塊局部變量陰影可變的local_variables數組包含3項:
a = 1
puts local_variables.inspect #=> [:a]
proc { |;a|
puts local_variables.inspect #=> [:a,:a,:a]
}.call
如果我不影,任何它包含1項:
puts local_variables.inspect #=> []
proc { |;b|
puts local_variables.inspect #=> [:b]
}.call
又如塊的局部變量不會遮蔽任何東西:
a = 1
puts local_variables.inspect #=> [:a]
proc { |;b|
puts local_variables.inspect #=> [:b,:a]
}.call
是t第一種情況下這些額外條目的原因是什麼?這是紅寶石的bug嗎?
嗯''''在'|; a |'中做什麼? – mhutter
@Manuel它將參數分隔爲lambda和局部變量。 – mudasobwa
我在這裏報告了這個錯誤https://bugs.ruby-lang.org/issues/9486 – ryantm