From: WATANABE Hirofumi Date: 2006-11-02T03:13:54+09:00 Subject: [ruby-dev:29737] Re: variable _ and multiple assignment in irb わたなべです。 irbでは_は最後に実行した結果を保持しています。 % irb >> "foo" => "foo" >> _ => "foo" "Yusuke ENDOH" writes: > irb で _ に多重代入をするとなんか変な気がします。 > > $ irb -v > irb 0.9.5(05/04/13) > $ irb > irb(main):001:0> x,=[1,2] > => [1, 2] > irb(main):002:0> x > => 1 > irb(main):003:0> _,=[1,2] > => [1, 2] > irb(main):004:0> _ > => [1, 2] > > ruby 本体では _ も 1 になるので、おそらく irb の問題だと思います。 _,=[1,2]の実行結果は[1, 2]なので_は[1, 2]になります。 > irb でも一行で書くと 1 になります。 > > irb(main):005:0> _,=[1,2];_ > => 1 途中で使われた_の中身が実行結果になるので1となります。 > irb 0.9(02/07/03) では再現しませんでした。 たぶんこれ以降に組み入れられた機能だと思います。 doc/irb/irb.rd.jaより抜粋: = システム変数 --- _ 前の計算の実行結果を覚えている(ローカル変数). --- __ 実行結果の履歴を覚えている. __[line_no]で、その行で実行した結果を得ることができる. line_noが負の 時には、最新の結果から-line_no前の結果を得ることができる. -- わたなべひろふみ