我正在学习在ruby中实现dsl,但对instance_eval的使用感到困惑。我的问题是,在不调用config方法的情况下,如何在这段代码中访问config变量,以及是否在调用config方法时调用了它。
class Rails
def self.configure (&block)
instance_eval(&block)
end
def self.config
@config I|= {}
end
end
Rails.yes
Rails.configure do
config["feature"] = true
end
这是因为当ruby看到配置时,它要么用config找到变量,要么用config找方法,这里我们还没有用config定义变量,但有一个名为config的方法,所以它称为config方法。