* lib/delegate.rb: Add example for __setobj__ and __getobj__
[Bug #8615] Patch by Caleb Thompson git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
e82591d0ca
commit
0357488b43
@ -1,3 +1,8 @@
|
|||||||
|
Thu Jul 11 00:48:29 2013 Zachary Scott <zachary@zacharyscott.net>
|
||||||
|
|
||||||
|
* lib/delegate.rb: Add example for __setobj__ and __getobj__
|
||||||
|
[Bug #8615] Patch by Caleb Thompson
|
||||||
|
|
||||||
Wed Jul 10 23:29:22 2013 Zachary Scott <zachary@zacharyscott.net>
|
Wed Jul 10 23:29:22 2013 Zachary Scott <zachary@zacharyscott.net>
|
||||||
|
|
||||||
* lib/logger.rb: Use :call-seq: for method signature rdoc
|
* lib/logger.rb: Use :call-seq: for method signature rdoc
|
||||||
|
@ -230,6 +230,34 @@ end
|
|||||||
# and even to change the object being delegated to at a later time with
|
# and even to change the object being delegated to at a later time with
|
||||||
# #__setobj__.
|
# #__setobj__.
|
||||||
#
|
#
|
||||||
|
# class User
|
||||||
|
# def born_on
|
||||||
|
# Date.new(1989, 09, 10)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# class UserDecorator < SimpleDelegator
|
||||||
|
# def birth_year
|
||||||
|
# born_on.year
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# decorated_user = UserDecorator.new(User.new)
|
||||||
|
# decorated_user.birth_year #=> 1989
|
||||||
|
# decorated_user.__getobj__ #=> #<User: ...>
|
||||||
|
#
|
||||||
|
# A SimpleDelegator instance can take advantage of the fact that SimpleDelegator
|
||||||
|
# is a subclass of +Delegator+ to call <tt>super</tt> to have methods called on
|
||||||
|
# the object being delegated to.
|
||||||
|
#
|
||||||
|
# class SuperArray < SimpleDelegator
|
||||||
|
# def [](*args)
|
||||||
|
# super + 1
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
#
|
||||||
|
# SuperArray.new([1])[0] #=> 2
|
||||||
|
#
|
||||||
# Here's a simple example that takes advantage of the fact that
|
# Here's a simple example that takes advantage of the fact that
|
||||||
# SimpleDelegator's delegation object can be changed at any time.
|
# SimpleDelegator's delegation object can be changed at any time.
|
||||||
#
|
#
|
||||||
|
Loading…
x
Reference in New Issue
Block a user