From: Shin-ichiro Hara Date: 1997-03-20T03:07:07+09:00 Subject: [ruby-list:2395] Re: eval()'s context 原です。 > けいじゅ@SHLジャパンです. > どうもです. でも, バインディングを用いても以前のeval()中のdefなどと動 > 作が異なっているので若干注意しなくてはいけませんね. そういえば binding を使ったことがなかった。(^^; どうやって使うんでしょう。 例をあげていただくとありがたいのですが。 > eval()を用いたメソッド定義って2段階にトリッキーなのであまり使っている > 人はいないでしょうね. > > 1段目: クラス文(class ...)によるクラス定義は複数できる. これは eval を使わなくてもそうですよね。例えば、 class Foo def bar print "bar\n" end end foo = Foo.new foo.bar class Foo def baz print "baz\n" end end foo.baz みたいに続けて定義できるということですよね。 そういう事じゃないのかな。 > 2段目: evalを用いれば, 動的に(文字列から)メソッド/クラスを定義できる. これも「文字列から」という点では eval だけど、「動的に」という点では eval の特徴ではないですよね。 while $input = gets class Foo def bar print "Your input : #$input" end end foo = Foo.new foo.bar end とうコードは成立する。