【发布时间】:2012-09-20 10:27:42
【问题描述】:
假设我们有 A、B、C 类。
A
def self.inherited(sub)
# meta programming goes here
# take class that has just inherited class A
# and for foo classes inject prepare_foo() as
# first line of method then run rest of the code
end
def prepare_foo
# => prepare_foo() needed here
# some code
end
end
B < A
def foo
# some code
end
end
C < A
def foo
# => prepare_foo() needed here
# some code
end
end
如您所见,我正在尝试将foo_prepare() 调用注入foo() 方法中的每一个。
如何做到这一点?
此外,我一直在考虑覆盖 class A 中的 send 类,这样我就可以运行 foo_prepare 而不仅仅是让 send(超级)来完成其余的方法。
你们怎么看,解决这个问题的最佳方法是什么?
【问题讨论】:
标签: ruby metaprogramming