From: matz@... (Yukihiro Matsumoto) Date: 1997-08-20T16:18:21+09:00 Subject: [ruby-dev:186] Re: Class#eval [Re: ftplib.rb revision 1.4] In message "[ruby-dev:185] Re: [ruby-list:3720] Re: Class#eval [Re: ftplib.rb revision 1.4]" on 97/08/20, 石塚圭樹 writes: |けいじゅ@日本ラショナルです. | |ruby-devに引っ越します もっと早く移動するべきでしたね. |>single_evalについてはまだ悩んでいるのですが,Classのコンテキ |>ストで評価され,メソッドや定数はClassに対してのみ定義される |>という意味でメタクラスアクセスというのは正しいと思います. | |ん? | |foo.single_eval ... はfooの特異クラスへ定義を行うんですよね? |Foo.single_eval ... もFooの特異クラスへ定義を行うといっているんですよ |ね? 特異クラスという用語は注意して使って下さい. foo.single_eval ... はfooの特異メソッドを定義します Foo.single_eval ... はFooの特異メソッド(クラスメソッド)を定義します となると思います. |>それはちょっと違うんじゃ? これだとFooの解決にbindが使われま |>すから.それになんかあまり使いやすそうでないですよ. | |ごめんごめん, 表現が悪かった. Foo.eval "..."で, 静的コンテキストから持っ |てくる部分をbindから持ってくれば? といういみでした. | |どっかで, | | Foo.eval "..." | bind = binding | |と | | Foo.eval "...", bind | |は同じいみになります. 余計にわからない.??? ちなみに現状では Foo.eval("...", binding) ≡ eval("...", binding) にしています.