W3cubDocs

/Ruby 3

class WeakRef

Parent:
Delegator

Weak Reference class that allows a referenced object to be garbage-collected.

A WeakRef may be used exactly like the object it references.

Usage:

foo = Object.new            # create a new object instance
p foo.to_s                  # original's class
foo = WeakRef.new(foo)      # reassign foo with WeakRef instance
p foo.to_s                  # should be same class
GC.start                    # start the garbage collector
p foo.to_s                  # should raise exception (recycled)

Constants

VERSION

Public Class Methods

new(orig) Show source
# File lib/weakref.rb, line 37
def initialize(orig)
  case orig
  when true, false, nil
    @delegate_sd_obj = orig
  else
    @@__map[self] = orig
  end
  super
end

Creates a weak reference to orig

Raises an ArgumentError if the given orig is immutable, such as Symbol, Integer, or Float.

Calls superclass method Delegator::new

Public Instance Methods

weakref_alive?() Show source
# File lib/weakref.rb, line 58
def weakref_alive?
  @@__map.key?(self) or defined?(@delegate_sd_obj)
end

Returns true if the referenced object is still alive.

Ruby Core © 1993–2020 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.