Class: WeakRef (Ruby 2.7.5)
Description: Class : WeakRef - Ruby 2.7.5

### Home Classes Methods

### In Files

- weakref.rb

### Parent

Delegator

### Namespace

- CLASS WeakRef::RefError

### Methods

- ::new
- #weakref_alive?

### Class/Module Index

Quicksearch

- WeakRef
- WeakRef::RefError

No matching classes.

# WeakRef

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)

### Public Class Methods

new(orig) click to toggle source

Creates a weak reference to `orig`

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

                   # File weakref.rb, line 36
    def initialize(orig)
      case orig
      when true, false, nil
        @delegate_sd_obj = orig
      else
        @@__map[self] = orig
      end
      super
    end

### Public Instance Methods

weakref_alive?() click to toggle source

Returns true if the referenced object is still alive.

                   # File weakref.rb, line 57
    def weakref_alive?
      @@__map.key?(self) or defined?(@delegate_sd_obj)
    end