From: Kazuhiro NISHIYAMA Date: 2000-11-09T04:21:34+09:00 Subject: [ruby-dev:11448] Re: Ruby I18N On Tue, 7 Nov 2000 16:50:29 +0900 Yasushi Shoji wrote: > Rubyって、Objectが型を持ちますよね?その型を変化させる事ってします? > > たとえば、IOの instance 'io'があったとして、さらに programmerはこれが > Fileだと知っていた場合 io.to_file; p io # => Fileみたいに。 > > これができれば(をさせれば) Stringでも > > str = gets > p str #=> String > > str.identify > p str #=> EUC > > とか。 > > もし、-Kで UTF-8が指定されてたら同じ scriptでも > > str = gets > p str #=> UTF8 > > ですよね。(たとえ中身がなんであれ) > > 一度 Stringの sub classである UTF8とか EUCになれば、str[0]で一文字目を取 > りだすのも UTF8#[]か EUC#[]がやってくれそうなんですが… これに近いのですが、Stringの中にサブクラスが あるのがわかりやすいと思います。 class String class UTF8 < String # ... end class EUC-JP < String # ... end end みたいになっていて、変換は組み込みでサポートするものは "EUC".to_utf8 のように変換できて、一般には "文字列".convert_to(String::UTF8) のように変換できると良さそうに思います。 それから変換はString自体を変化させる(破壊的メソッド)よりも 別オブジェクトができる方が自然に思います。 --- ZnZ(ゼット エヌ ゼット) 西山和広(Kazuhiro NISHIYAMA) mailto:zn@mbf.nifty.com