source -> IO::Buffer | String | nilRuby 4.1 から[permalink][rdoc][edit]-
バッファの参照元を返します。
返す値はバッファの作り方によって異なります。
- IO::Buffer#slice で作ったスライス -- IO::Buffer#slice を呼んだバッファ。スライスからさらに作った場合は、直接の親
- IO::Buffer.for にブロックを渡して作ったバッファ -- 渡した文字列そのもの
- IO::Buffer.for にブロックを渡さずに作ったバッファ -- 内部で作った凍結済みの複製。渡した文字列が凍結済みの場合は、その文字列そのもの
- IO::Buffer.new や IO::Buffer.map で作ったバッファ -- nil
無効になったスライスでも、参照元を返します。 IO::Buffer::Storage#free や IO::Buffer::Storage#transfer を呼んだあとのバッファと、IO::Buffer.for のブロックを抜けたあとのバッファでは nil を返します。
例: IO::Buffer.for で作ったバッファbuf = IO::Buffer.new(8) p buf.source # => nil part = buf.slice(2, 4) p part.source.equal?(buf) # => true # スライスからさらに作った場合は、直接の親が参照元になる child = part.slice(1, 2) p child.source.equal?(part) # => true p part.source.equal?(buf) # => truestr = +"abc" p IO::Buffer.for(str) {|b| b.source.equal?(str) } # => true copy = IO::Buffer.for(str).source p copy.frozen? # => true p copy.equal?(str) # => false[SEE_ALSO] IO::Buffer#slice, IO::Buffer#advance