Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
31
Task/Delegates/Ruby/delegates-1.rb
Normal file
31
Task/Delegates/Ruby/delegates-1.rb
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
class Delegator
|
||||
attr_accessor :delegate
|
||||
def operation
|
||||
if @delegate.respond_to?(:thing)
|
||||
@delegate.thing
|
||||
else
|
||||
'default implementation'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Delegate
|
||||
def thing
|
||||
'delegate implementation'
|
||||
end
|
||||
end
|
||||
|
||||
if __FILE__ == $PROGRAM_NAME
|
||||
|
||||
# No delegate
|
||||
a = Delegator.new
|
||||
puts a.operation # prints "default implementation"
|
||||
|
||||
# With a delegate that does not implement "thing"
|
||||
a.delegate = 'A delegate may be any object'
|
||||
puts a.operation # prints "default implementation"
|
||||
|
||||
# With delegate that implements "thing"
|
||||
a.delegate = Delegate.new
|
||||
puts a.operation # prints "delegate implementation"
|
||||
end
|
||||
19
Task/Delegates/Ruby/delegates-2.rb
Normal file
19
Task/Delegates/Ruby/delegates-2.rb
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
require 'forwardable'
|
||||
|
||||
class Delegator; extend Forwardable
|
||||
attr_accessor :delegate
|
||||
def_delegator :@delegate, :thing, :delegated
|
||||
|
||||
def initialize
|
||||
@delegate = Delegate.new()
|
||||
end
|
||||
end
|
||||
|
||||
class Delegate
|
||||
def thing
|
||||
'Delegate'
|
||||
end
|
||||
end
|
||||
|
||||
a = Delegator.new
|
||||
puts a.delegated # prints "Delegate"
|
||||
Loading…
Add table
Add a link
Reference in a new issue