e$BA0ED$G$9!#e(B
e$B%a%=%C%I$N0z?t$KBeF~$7$?>l9g!“3g8L!&0z?t$J$7e(Bsupere$B$G$OBeF~8e$NCM$,%9!<%Q!<%/%i%9$Ne(B
e$B%a%=%C%I$KEO$5$l$^$9$,!”%V%m%C%/0z?t$N>l9g$O$b$H$N%V%m%C%/$,EO$5$l$k$h$&$G$9!#e(B
— t.rb
class A
def foo(x, *y, &z)
p x #=> 4
p y #=> [5, 6, 7]
z.call #=> original block
end
end
class B < A
def foo(x, *y, &z)
x = 4
y = [5, 6, 7]
z = lambda { puts “replaced block” }
super
end
end
B.new.foo(1, 2, 3) { puts “original block” }
$ ruby-1_8 -v t.rb
ruby 1.8.7p5000 (2009-02-26 revision 22644) [i686-linux]
4
[5, 6, 7]
original block
$ ruby-trunk -v t.rb
ruby 1.9.2dev (2009-02-03 trunk 21996) [i686-linux]
4
[5, 6, 7]
original block
e$B$3$l$O0U?^$5$l$?5sF0$G$7$g$&$+!#e(B