给出这样的代码:
p = proc do |*args, &block|
p self
p args
p block[] if block
end
q = proc do |*args, &block|
p 'before'
instance_exec(*args, &p)
end
o = Object.new
o.define_singleton_method(:my_meth, q)
o.my_meth(1, 2) { 3 }
Run Code Online (Sandbox Code Playgroud)
我怎样才能完全从呼叫转发p
到q
在保持q
的接收器?基本上我也想打印3,但是instance_exec
,像所有红宝石方法一样,只需要一个块.是否有可能不改变p
,这样我就可以使用p
和q
互换(的想法是让q
有时包p
).