Данный код выглядит так:
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 }
Как я могу полностью переадресовать вызов с p
на q
, сохраняя при этом q
приемник? В принципе, я также хочу напечатать 3, но instance_exec
, как и все методы ruby, может занимать только один блок. Возможно ли это без изменения p
, чтобы я мог использовать p
и q
взаимозаменяемо (идея состоит в том, чтобы q
иногда оборачивать p
).