From: matz@... (Yukihiro Matsumoto) Date: 2002-07-24T22:22:32+09:00 Subject: [ruby-dev:17807] Re: self in block まつもと ゆきひろです In message "[ruby-dev:17806] Re: self in block" on 02/07/24, masaki writes: |define_method の方は、まだ 1.6.7 なので試せないのですが、上の定義 + 以下の |script |は、私の元の Sequence で | |Prime =Sequence.new([2,3]){"|n| | m=self[n-1]+2 | m += 2 while find{|k| break if k*k>m; m % k == 0} | m "} |としたのと同じ結果 |2 |3 |5 |7 |を出力してくれますか? 正木さんが問題提起されたのは「selfのすり替えができるか」とい う点と、「ローカル変数の(思わぬ)重複の回避」という点の二つが あり、元のdefine_methodの問題は前者に対応したものです。 ですから、後者の問題を含む「上記のスクリプト」は正しく動作し ません。Sequence.newに与えたブロック中のmを別の名前にすれば 動作します。