зеркало из https://github.com/github/ruby.git
* 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:
Родитель
e82591d0ca
Коммит
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>
|
||||
|
||||
* 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
|
||||
# #__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
|
||||
# SimpleDelegator's delegation object can be changed at any time.
|
||||
#
|
||||
|
|
Загрузка…
Ссылка в новой задаче