summaryrefslogtreecommitdiff
path: root/jni/ruby/sample/delegate.rb
diff options
context:
space:
mode:
authorJari Vetoniemi <jari.vetoniemi@indooratlas.com>2020-03-16 18:49:26 +0900
committerJari Vetoniemi <jari.vetoniemi@indooratlas.com>2020-03-30 00:39:06 +0900
commitfcbf63e62c627deae76c1b8cb8c0876c536ed811 (patch)
tree64cb17de3f41a2b6fef2368028fbd00349946994 /jni/ruby/sample/delegate.rb
Fresh start
Diffstat (limited to 'jni/ruby/sample/delegate.rb')
-rw-r--r--jni/ruby/sample/delegate.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/jni/ruby/sample/delegate.rb b/jni/ruby/sample/delegate.rb
new file mode 100644
index 0000000..918dc08
--- /dev/null
+++ b/jni/ruby/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!