DP.です。

[list:28268]
 確かに、どちらにしろ proc {} のところで引数が消えてしまいますね。
 うーん、やっぱり self を引数として渡してくるという動作は納得できません。
既に self は、そのイテレタの中に self として導入されているのですから、
(おそらく instance_eval 自体それが目的でしょうし、)やはりここは
引数ナシにしてくれた方が自然だと思います。


[list:28269]
>ブロックを渡したときには instance_eval への引数をブロックに渡すように
>してもいいかも知れません。

 私もそう思います。

[list:28277]
>その場合には instance_eval で
>はない別の名前が必要だよなあ、というところで止まってます。

 instance_yield ではダメでしょうか?

* * *

 しかし、 instance_eval を使って、外部のイテレータの中から直接内部の
インスタンス変数等の内部名を使用してもらうというのは、オブジェクト指向
としてはあまり適切でない設計になるのかも知れません。ちゃんと隠蔽して
メソッドだけを使わせるなら例えば

インスタンス内からの呼び出し: yield self,arg1,arg2
イテレータ定義: do |this,arg1,arg2| this.method ...

などとすれば、十分かも。実際のケースでもこれで事足りるような気がします。

# From
  class C;def another;;end;def Just;;end;def ruby;;end;def hacker;;end;end
  print C.instance_methods.reverse.join(" "), ','
# "DP.-KAORU" <program-zero / ma4.seikyou.ne.jp>
# ICQ 26786249