summaryrefslogtreecommitdiff
path: root/sample/delegate.rb
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-07-26 17:11:56 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-07-26 17:11:56 +0000
commit6d6bd262704323f20064cf7ba2f30387d5a10029 (patch)
tree2c33e2d375328f4a7334d4e5c0845d28287a843e /sample/delegate.rb
parent1788d08d257060e6187817290d604d7da2f1ea65 (diff)
* lib/delegate.rb: split executable code into sample directory.
* sample/delegate.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46966 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'sample/delegate.rb')
-rw-r--r--sample/delegate.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/sample/delegate.rb b/sample/delegate.rb
new file mode 100644
index 0000000..918dc08
--- /dev/null
+++ b/sample/delegate.rb
@@ -0,0 +1,31 @@
+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!