From: kjana@... (YANAGAWA Kazuhisa) Date: 2000-11-08T23:33:49+09:00 Subject: [ruby-dev:11444] Re: Ruby I18N In message matz@zetabits.com writes: > 「文字オブジェクトの必要性」を感じさせてくれる説得メールを待っ > てます。;-) 「文字オブジェクトの必要性」というよりは「文字オブジェクトとシステムと のかかわり」の話になりますが.... 「文字オブジェクト」という存在というより,文字として扱われるオブジェク トに対する API を定めるとします. # Java なら Interface にするところでしょうか.デフォルトが byte # sequence だから,Fixnum の文字としての扱いに関するあたりかなぁ.以下 # 「文字オブジェクト」 == 「文字としての API を備えたオブジェクト」 それで,String は文字の sequence とみなす.外部表現から文字列への変換 やその逆は,String の処理を行うモジュールが好きに定義する.別に,他の モジュールと conflict しても構わない.都合がいいように,勝手に決める. # String に mix-in するのと,単に別にあるのとではどっちがいいかな.... # 違う表現のモジュールを複数 require したらどうなるのか,っていうのは # 決めないといけないか. 横断的な文字コードの変換や,コードの自動判別にはまた別のモジュールを使 う.どうせ複数のエンコーディングについて知ってなきゃならないんだから, 他とまとめるのは不自然な気がする. # 変換には iconv とか,まあ,なにか,いろいろ. 同じモジュールによる処理でも,入出力で変換するだけの方が毎回エンコーディ ングを考慮してなにかするより効率はいいんじゃないかと思うんですけどね. # C のコードだと呼出しと返り値で毎回変換が必要になるのはちょっと悲しい # か? 実はある一定の基準で classify できるオブジェクトの Array を対象にとる, 任意のオブジェクトをリテラルとした Regexp があったら今すぐでもできる事 ではある.この場合リテラルになるオブジェクトに要求されるのは,最低限だ と ==.`[a-z]' がいるんだと <=> 持って include Comparable かな.ついで にオブジェクトの「クラス」を作れれば今より柔軟だ :-) # parens = RegularExpression::Class.new("(", ")", "[", "]", "{", "}") # exp = RegularExpression.new(parens, "foo", parens) # exp.match(["a", "(", "foo", ")", "b"] #=> 1 # # とか.いかんせんこれだと現状の Regexp とほぼ同じ機能が重複して嫌って # いう話はある. -- 柳川和久 @ 東大阪市 . 大阪府 November 8, 2000 街に戻ったら大きな黒い翼を作ろう 名も知らぬ母の事を想って