mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* sample/delegate.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			487 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			487 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
require 'delegate'
 | 
						|
 | 
						|
class ExtArray<DelegateClass(Array)
 | 
						|
  def initialize()
 | 
						|
    super([])
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
ary = ExtArray.new
 | 
						|
p ary.class
 | 
						|
ary.push 25
 | 
						|
p ary
 | 
						|
ary.push 42
 | 
						|
ary.each {|x| p x}
 | 
						|
 | 
						|
foo = Object.new
 | 
						|
def foo.test
 | 
						|
  25
 | 
						|
end
 | 
						|
def foo.iter
 | 
						|
  yield self
 | 
						|
end
 | 
						|
def foo.error
 | 
						|
  raise 'this is OK'
 | 
						|
end
 | 
						|
foo2 = SimpleDelegator.new(foo)
 | 
						|
p foo2
 | 
						|
foo2.instance_eval{print "foo\n"}
 | 
						|
p foo.test == foo2.test       # => true
 | 
						|
p foo2.iter{[55,true]}        # => true
 | 
						|
foo2.error                    # raise error!
 |