From: rubikitch@... Date: 2008-01-25T01:48:29+09:00 Subject: [ruby-dev:33362] Re: Ruby1.9 String バイト列へのインデックス アクセス From: "NARUSE, Yui" Subject: [ruby-dev:33199] Re: Ruby1.9 String バイト列へのインデックス アクセス Date: Sun, 20 Jan 2008 04:55:27 +0900 るびきちです。 > > あるいはBytesクラスを用意してString#byteで作成できるといいかもしれません。 > > > > s = "abcde" > > s.byte # "abcde"のバイト列オブジェクト > > s.byte[3] # => 100 > > s.byte[3] = 101 # 破壊的更新 > > s # => "abcee" > > これ、今やろうとして、怒られたんですよね(ぉ > "hoge".bytes[1] = 0x62 > NoMethodError: undefined method `[]=' for > # たった今思い付いたのですが、String#bytesが返すオブジェクトはByteArray等 元々の文字列のメモリと共有しているバイト列オブジェクトを返し、そのオブジェクトが Enumeratorと同じインターフェースを持つというのはどうでしょうか? Enumeratorのメソッドに加えて[], []=を持つというふうに。 ASCII-8BITなStringと違って[]が文字コードを返すのです。 そうすると s.bytes {〜} とも s.bytes[3] とか書けますね。 もしやByteEnumeratorのほうがいい名前? -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/