けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :28353 ] the message: "[ruby-list:28353] Re: argument to
instance_eval block ", on Feb/27 20:54(JST) Minero Aoki writes:

>あおきです。

>> 何か使いまくっているような書き方されていますが... 
>いやいや、相対指定ですから(笑)

うーん. どうでしょう? 実際に調べてみると...

>> instance_evalよりも module_eval/evalのほうが使用頻度はズート多いですね
>> (^^;;;
>
>それは同感です。ぼくは明らかに module_eval が一番多いっす。
>
>どれくらい違うのか grep */*.rb | wc -l してみると、
>
>  instance_eval   19
>  module_eval     34
>  eval            19
>
>意外に少ない。

では. 私も

  instance_eval    19
  module_eval      23
  eval             88

ですね. ね. 私もそんなには使っていません(^^;;;

あと, evalがめちゃくちゃ多いですが, module_evalができたのが比較的最近な
ので, 本来であればmodule_evalのほうがよいようなものも含まれているんじゃ
ないかしら?

>ちなみに instance_eval の目的別内訳は
>
>  インスタンス変数アクセス  11
>  一時環境作成               6
>  よくわかんない             2
>
>でした。やっぱりインスタンス変数アクセスが多いみたい。

私は...

  インスタンス変数アクセス  10
  一時環境作成               8
  よくわかんない             1

ですね. 大体同じですね.

>一方 module_eval は「メソッドを定義するメソッド」がほとんどでした。
>(かなり、相当、かたよってるかも  ^^;;)

やっぱ, そんなものじゃないですか? わたしもそうです.

>> 最近はprotectedができたのでだいぶ必要性は少なくなっていますが... C++の
>> friend見たいのがあればさらによいのかも.
>
>ぼくは継承の壁を越えたいときは private にして __send__ 使うように
>してます。instance_eval よりはちょっと気楽なので。

なるほど. そっちのほうが良いかも.

__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---