Ruby 4.1 リファレンスマニュアル

instance method IO::Buffer::Storage#transfer

transfer -> IO::Buffer::StorageRuby 4.1 から[permalink][rdoc][edit]

メモリ領域の所有権を新しい IO::Buffer::Storage へ移し、その新しいバッファを返します。

所有権を手放した自身は、どのメモリ領域も指さない状態になります。この状態は IO::Buffer#null? で調べられます。自身から IO::Buffer#slice で作った IO::Buffer::Slice は、無効になります。

IO::Buffer::Slice には、このメソッドはありません。

[EXCEPTION] FrozenError:
凍結済みのバッファに対して呼び出した場合に発生します。
[EXCEPTION] IO::Buffer::LockedError:
ロックされているバッファに対して呼び出した場合に発生します。
buf = IO::Buffer.new(4)
buf.set_string("Ruby")

other = buf.transfer
p other.get_string # => "Ruby"

p buf.null? # => true
p buf.size  # => 0

[SEE_ALSO] IO::Buffer::Storage#free, IO::Buffer#null?