for(string) -> IO::BufferRuby 3.1 から[permalink][rdoc][edit]for(string) {|buffer| ... } -> object-
文字列 string のメモリ領域を参照する、コピーを伴わないバッファを作成します。
ブロックを渡さない場合は、string の内容を複製した凍結済みの文字列をバッファの元として使い、読み取り専用のバッファを返します。元の文字列とは切り離されるため、あとから元の文字列を変更してもバッファの内容は変わりません。
ブロックを渡した場合は、string 自身のメモリ領域を参照するバッファをブロックに渡し、ブロックの評価結果を返します。バッファへの書き込みは string に反映されます。ブロックの実行中、string は変更できません。 string が freeze されている場合は読み取り専用のバッファになります。
- [PARAM]
string: - バッファの元にする String を指定します。
例: ブロックを渡した場合buffer = IO::Buffer.for("test") p buffer.get_string # => "test" p buffer.external? # => true p buffer.readonly? # => true # 元の文字列を変更してもバッファには影響しない str = +"test" buffer = IO::Buffer.for(str) str << "XY" p str # => "testXY" p buffer.get_string # => "test"str = +"test" IO::Buffer.for(str) do |buffer| p buffer.readonly? # => false buffer.set_string("Ruby") end p str # => "Ruby"[SEE_ALSO] IO::Buffer.new, IO::Buffer.map
- [PARAM]