要約
GC の対象になるオブジェクトへの weak reference を持つクラスです。主に WeakRef クラスの内部で使用されるため、weakref ライブラリ経由で使用してください。
目次
- インスタンスメソッド
インスタンスメソッド
self[key] -> object | nilRuby 2.0.0 から[permalink][rdoc][edit]-
引数 key で指定されたオブジェクトが参照するオブジェクトを返します。
参照先のオブジェクトが存在しない場合、GC されている場合、対象外のオブジェクトを参照している場合に nil を返します。
- [PARAM]
key: - 参照元のオブジェクトを指定します。
判定はオブジェクトの同一性(Object#equal?)によって行われます。
例weak_map = ObjectSpace::WeakMap.new key = "text" weak_map[key] = "test" p weak_map[key] # => "test" p weak_map["text"] # => nil (内容は同じでも別オブジェクトなので nil)[SEE_ALSO] ObjectSpace::WeakMap#[]=, ObjectSpace::WeakMap#key?
- [PARAM]
self[key] = valueRuby 2.0.0 から[permalink][rdoc][edit]-
引数 key から引数 value への参照を作成します。
- [PARAM]
key: - 参照元のオブジェクトを指定します。
- [PARAM]
value: - 参照先のオブジェクトを指定します。
weak_map = ObjectSpace::WeakMap.new key = "text" weak_map[key] = "test" # => test p weak_map[key] # => test - [PARAM]
each {|key, value| ... } -> selfRuby 2.1.0 から[permalink][rdoc][edit]each_pair {|key, value| ... } -> self-
保持しているエントリの参照元オブジェクトと参照先オブジェクトを引数としてブロックを評価します。
GC によって参照先が回収されたエントリは反復の対象になりません。反復の順序は不定です。
Hash など他の反復可能なクラスと異なり、ブロックを省略しても Enumerator は返しません。エントリが1つ以上ある状態でブロックを指定せずに呼び出すと LocalJumpError が発生します。
each_pair は each のエイリアスです。
例weak_map = ObjectSpace::WeakMap.new key = "text" weak_map[key] = "test" weak_map.each { |k, v| p [k, v] } # => ["text", "test"][SEE_ALSO] ObjectSpace::WeakMap#each_key, ObjectSpace::WeakMap#each_value
each_key {|key| ... } -> selfRuby 2.1.0 から[permalink][rdoc][edit]-
保持しているエントリの参照元オブジェクトを引数としてブロックを評価します。
GC によって参照先が回収されたエントリは反復の対象になりません。反復の順序は不定です。
Hash など他の反復可能なクラスと異なり、ブロックを省略しても Enumerator は返しません。エントリが1つ以上ある状態でブロックを指定せずに呼び出すと LocalJumpError が発生します。
例weak_map = ObjectSpace::WeakMap.new key = "text" weak_map[key] = "test" weak_map.each_key { |k| p k } # => "text"[SEE_ALSO] ObjectSpace::WeakMap#each, ObjectSpace::WeakMap#each_value
each_value {|value| ... } -> selfRuby 2.1.0 から[permalink][rdoc][edit]-
保持しているエントリの参照先オブジェクトを引数としてブロックを評価します。
GC によって参照先が回収されたエントリは反復の対象になりません。反復の順序は不定です。
Hash など他の反復可能なクラスと異なり、ブロックを省略しても Enumerator は返しません。エントリが1つ以上ある状態でブロックを指定せずに呼び出すと LocalJumpError が発生します。
例weak_map = ObjectSpace::WeakMap.new key = "text" weak_map[key] = "test" weak_map.each_value { |v| p v } # => "test"[SEE_ALSO] ObjectSpace::WeakMap#each, ObjectSpace::WeakMap#each_key
key?(key) -> boolRuby 2.1.0 から[permalink][rdoc][edit]include?(key) -> boolmember?(key) -> bool-
引数 key を参照元とするエントリを保持している場合に true を返します。
判定はオブジェクトの同一性(Object#equal?)によって行われます。 == や eql? による判定は行われないため、内容が等しくても別オブジェクトであれば false になります。
- [PARAM]
key: - 探索するオブジェクトを指定します。
weak_map = ObjectSpace::WeakMap.new key = "text" weak_map[key] = "test" p weak_map.key?(key) # => true p weak_map.include?(key) # => true p weak_map.member?(key) # => true p weak_map.key?("text") # => false (内容は同じでも別オブジェクトなので false)[SEE_ALSO] ObjectSpace::WeakMap#[]
- [PARAM]
inspect -> StringRuby 2.0.0 から[permalink][rdoc][edit]-
self の情報を人間に読みやすい文字列にして返します。
各エントリは
例参照元 => 参照先の形式で出力されます。Integer・Symbol・ true・false・nil などの immediate な値はそれ自身を Object#inspect した結果が使われますが、それ以外のオブジェクトは to_s や inspect を呼び出さずに#<クラス名:0xアドレス>の形式で表示されます。weak_map = ObjectSpace::WeakMap.new weak_map[:key] = 1 p weak_map.inspect # => "#<ObjectSpace::WeakMap:0x00007f5b6c0a5d20: :key => 1>" keys -> [object]Ruby 2.1.0 から[permalink][rdoc][edit]-
保持しているエントリの参照元オブジェクトからなる配列を返します。
GC によって参照先が回収されたエントリのキーは含まれません。返される配列の要素の順序は不定です。
例weak_map = ObjectSpace::WeakMap.new key = "text" weak_map[key] = "test" p weak_map.keys # => ["text"][SEE_ALSO] ObjectSpace::WeakMap#values
size -> IntegerRuby 2.1.0 から[permalink][rdoc][edit]length -> Integer-
保持しているエントリの数を返します。GC によって回収されたエントリは数えません。
例weak_map = ObjectSpace::WeakMap.new key = "text" weak_map[key] = "test" p weak_map.size # => 1 p weak_map.length # => 1 values -> [object]Ruby 2.1.0 から[permalink][rdoc][edit]-
保持しているエントリの参照先オブジェクトからなる配列を返します。
GC によって回収されたエントリの値は含まれません。返される配列の要素の順序は不定です。
例weak_map = ObjectSpace::WeakMap.new key = "text" weak_map[key] = "test" p weak_map.values # => ["test"][SEE_ALSO] ObjectSpace::WeakMap#keys