全码:http://friendpaste.com/5TdtGPZaEK0DbDBa2DCUyB的method_missing在instance_eval的
class Options
def method_missing(method, *args, &block)
p method
end
end
options = Options.new
options.instance_eval do
foo
foo = "It aint easy being cheesy!"
end
puts "#===---"
options.foo
options.foo = "It still aint easy being cheesy!"
这将返回:
:foo
#===---
:foo
:foo=
因为它是治疗foo = ""
为instance_eval的范围内的局部变量,它不承认它的方法。
我将如何使instance_eval将其视为一种方法?
你想要什么'options.foo =“it aint ...”'要做什么? – klochner 2009-12-16 21:57:13
在method_missing中被捕获,以供我操纵它,特别是在散列中设置键/值。它会像一个Struct一样工作。 – RyanScottLewis 2009-12-16 22:00:15
查看完整的代码(链接在帖子的顶部) – RyanScottLewis 2009-12-16 22:01:17