From: Shin-ichiro HARA Date: 1997-11-14T18:26:00+09:00 Subject: [ruby-dev:839] Re: request SCAN 原です。 > まつもと ゆきひろです > |現在、イテレータの scan(reg){...} の返り値は nil になってい > |ますが、これをイテレータブロックの値を配列にして返すようにし > |たらどうでしょう。 > | > |(例) "abcd".scan(/(.)(.)/){ |x| x } #==> [["a", "b"], ["c", "d"]] > > うーん,これって結局 > > x = [] > "abcd".scan(/(.)(.)/){|x| > ary.push x > } > > と変わらないわけで,楽になる度合と戻り値を使わない場合に配列 > が無駄になることを秤にかけると,ちょっといやな感じがします. 確かに無駄になるのは気になるんですが。 > |正規表現に括弧が無い時は全体に括弧があると解釈される様にした > |らどうでしょう。(Perl のまね) > | > |"abcd".scan(/./) == "abcd".scan(/(.)/) > > これはよさそうな気がするので採用します. 自分で言っといてなんだけど(^^;、実はこれはちょっとへんかもしれ ない。 "abcd".scan(/../) == [["ab"], ["cd"]] となるわけですね。 "abcd".scan(/../) == ["ab", "cd"] の方が気持ちいいなあ。