From: Shin'ya Adzumi Date: 2002-07-25T14:36:53+09:00 Subject: [ruby-dev:17819] Re: self in block あづみです。 nobu.nakada@nifty.ne.jp wrote: > > class << Prime = Sequence::new([2,3]) > > def each > > i=0 > > loop do > > yield(self[i]) > > i+=1 > > end > > end > > このeachはSequenceに持っていってSequenseでinclude Enumerableす > れば、findも不要になりませんか。 Sequence 本体にどこまで機能を持たせるかですよね。こういうのが欲 しいと思ったことが無いので、どこまでが妥当なのか判断できなくて、 必要最低限だけにしました。 > > # 最初 Prime = class << Sequence::new([2,3]) と書いて nil に > > # なってしまってがびーんだったり^^ > > endの前にselfを入れれば…。 単に「もしかしたらこう書けるんでは!?」という思いつきなだけだっ たんですが^^ 残念ながら self を入れてもダメです。1.7 で仕様変更に なってますけど、1.6/1.7 両方ダメ。 $ ruby -e ' class Foo;end foo = class << Foo::new self end p foo ' # => Foo(1.6), #>(1.7) ちなみに、こう書けるようになってほしいと言う話ではないです。 > > まあ、採用する気にはなれません、と言われそうな気はしますが。 > > lambdaという名前をつけなきゃいけないのがイヤとか? 無名じゃないし、ブロックじゃないし、結構好き嫌いのある書き方なん じゃないかなと思ったので。自分は良くこういう書き方をするので、違 和感は無いんですが。 安積伸弥 adzumi@denpa.org