Class
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)
Class Methods
::
lib/weakref.rb
View on GitHub
# File tmp/rubies/ruby-2.5.9/lib/weakref.rb, line 36
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
.
Instance Methods
lib/weakref.rb
View on GitHub
# File tmp/rubies/ruby-2.5.9/lib/weakref.rb, line 57
def weakref_alive?
@@__map.key?(self) or defined?(@delegate_sd_obj)
end
Returns true if the referenced object is still alive.