黒田です. >まつもと ゆきひろ@トヨタケーラムです. > >そういえば,0.97cの新機能として以前指摘のあった, > >In message "[ruby-list:188] Linux report" > on 96/02/20, ozawa / prince.pe.u-tokyo.ac.jp <ozawa / prince.pe.u-tokyo.ac.jp> writes: >|小澤さく@東大です. > >|a を Array だとして,"#{a[0]}" のようなものの展開はしないのですか? > >というのを実装しました.実際には文字列,正規表現の中での#{} >は,{}を含まない任意の式が記述できるようになりました.意味無 >いんですけど, > > % ruby -le 'print "<<#{print 1}>>" > 1 > <<nil>> > >なんて結果になります.つまり,#{print 1}を評価して,1を出力 >し,その戻り値のnilを埋め込んだ文字列を外側のprintで出力する >わけです. オプション解析のために作ったルーチンで - -- 1:ARGV.each{|ta| 2: if ta =~ /^-(\w+)/ 3: $1.each_byte{|c| 4: if (VERSION == '0.97c') 5: $c2 = c.to_s 6: eval("$OPT_#{$c2} = 1") 7: else 8: c2 = c.to_s 9: eval("$OPT_#{c2} = 1") 10: end 11: } 12: continue 13: end 14:} - -- 5行目のようにグローバル変数にしておかないと, (eval):1: undefined method `c2' for main(Object) と言われます. 0.97c で言われるようになったのですが, 仕様なので しょうか? - -- 黒田 淳 (Kuroda Jun) <URL:mailto:j_kuro / pluto.ai.kyutech.ac.jp> <URL:http://www.pluto.ai.kyutech.ac.jp/~j_kuro/>