Method: SimpleDelegator#__setobj__

Defined in:
lib/delegate.rb

#__setobj__(obj) ⇒ Object

Changes the delegate object to obj.

It’s important to note that this does not cause SimpleDelegator’s methods to change. Because of this, you probably only want to change delegation to objects of the same type as the original delegate.

Here’s an example of changing the delegation object.

names = SimpleDelegator.new(%w{James Edward Gray II})
puts names[1]    # => Edward
names.__setobj__(%w{Gavin Sinclair})
puts names[1]    # => Sinclair


340
341
342
343
# File 'lib/delegate.rb', line 340

def __setobj__(obj)
  __raise__ ::ArgumentError, "cannot delegate to self" if self.equal?(obj)
  @delegate_sd_obj = obj
end