我試圖寫一個DSL,讓我做Ruby的元編程
Policy.name do
author "Foo"
reviewed_by "Bar"
end
下面的代碼幾乎可以處理它:
class Policy
include Singleton
def self.method_missing(name,&block)
puts name
puts "#{yield}"
end
def self.author(name)
puts name
end
def self.reviewed_by(name)
puts name
end
end
定義我的方法類方法(self.method_name )我可以訪問它使用以下語法:
Policy.name do
Policy.author "Foo"
Policy.reviewed_by "Bar"
end
如果我從方法名稱中刪除「自我」,並嘗試使用我想要的語法,然後我收到一個錯誤「方法未找到」在主,所以它不能找到我的功能,直到模塊內核。它好,我明白錯誤。但我該如何解決它?我如何修復我的課程,使其與我所需的語法一起工作?
嗨,八月,我在玩ruby元編程,你的例子+解釋幫了我很多。 StackOverflow規則! – 2010-05-29 18:14:04