From: shugo@... (MAEDA Shugo) Date: 1998-12-17T19:48:53+09:00 Subject: [ruby-dev:3855] Re: List() 前田です。 In message "[ruby-dev:3841] Re: List()" Shin-ichiro Hara wrote: > > ほんとはString#scanのようなメソッドも一応すべてListを使うように > > 変更した方がよいと思うのですが。 > > ほんとはそうですね。でも変更してもしなくてもユーザーにはほとんど > 関係ないでしょうね。scan(...) { |*x| ... と使っていた人はほとん > どいないでしょうから。でもほんとは List を使うべきです。 ひょっとしたら、 class StringScanner include Enumerable def initialize(str, pat) @str = str @pat = pat end def each(&block) @str.scan(@pat, &block) end end scanner = StringScanner.new("a1b2c3", /[a-z][0-9]/) scanner.my_each_with_index {|x| ... } なんてことをしようとする人がいるかもしれませんよ(^^; > (あ) > def collect > ary = [] > each { |x| > ary.push yield(x) > } > ary > end > > という定義ですが、List 方式が導入されたらやはり > > (い) > def collect > ary = [] > each { |*x| > ary.push yield(*x) > } > ary > end Cだと(い)は書きにくいので、Cレベルでは直接Listが見えるようにした 方がいいかもしれませんね。 そうすると(あ)の書き方で(い)と同じ意味になると思います。 > 話を戻すと、Enumerable のメソッドの定義はそのままで Hash#each は > 変える。その方式はありえると思います。気に入らなければユーザーが > 再定義すればいいですから。 ですね。 とりあえず、僕と原さんは意見が一致しましたけど、どうしましょう>まつもとさん > > 今日、結局穴だらけのままで提出してきました(^^; > > おめでとうございます。ruby をいじる時間が減ったりして。:-) いや、文字通り穴だらけ(表題だけの節があります(^^;)なので、卒論の締切までは コンピュータにかじりつくことになりそうです:-( # だからrubyをいじる時間もきっと減りません(^^; -- 前田 修吾 (mailto:shugo@aianet.ne.jp)