From: Tanaka Akira Date: 2008-01-01T16:19:25+09:00 Subject: [ruby-dev:32916] Re: NKF,Kconv In article <4779DFE1.6000707@airemix.com>, "NARUSE, Yui" writes: > これ自体は納得できるのですが、マッチさせて捨てるだけなのにdupするのがな > んか無駄な気がするのが引っ掛かる点でしょうか。ASCII-8BIT の正規表現を > マッチさせるのは、文字列をバイナリと解釈してマッチするという趣旨であると > 解釈して、暗黙にdup.force_encoding("ASCII-8BIT") できませんかね。 暗黙に force_encoding というのは、なんで force_encoding がこ んなに長くて明示的なのかという理由に反します。 force_encoding は文字という抽象を破るものですから、暗黙には やらないほうがいいでしょう。 あとは、dup はメモリを共有すると思えば気にならなくなりませんか。 > 「MatchData#begin あたりが定義できない」というのも返す文字列を > ASCII-8BIT にすれば回避できるような気がするのですが。 どんな定義でもよければ定義はできます。でも、いろんな性質が壊 れますよね。元の文字列には含まれない文字列が $& に出てくると か。(バイト列としては含まれてるでしょうが文字列としては) dup が無駄という理由で仕様を歪めるのはかなり本末転倒なように 思います。 > 結局のところ、String#valid_encoding? を使ってくださいということで、 > Kconv.is* は全廃でいい気もしているのですよね まぁ、それもひとつの方法かもしれません。 また、中身をそうするというのもあり得るかもしれません。 force_encoding は必要ですが。 -- [田中 哲][たなか あきら][Tanaka Akira]