我想为我的班级做一些类似
的DSL构建class Car
brand :mercedes
end
我需要写什么代码?
答案 0 :(得分:2)
brand
应该是一种方法。它必须在某处定义。您有选项:完全相同的类,父类或混合模块。我喜欢模块。
module MyDSL
def brand name
puts "Got brand #{name}"
end
end
class Car
extend MyDSL
brand :mercedes
end
# >> Got brand mercedes
虽然这回答了您的具体问题,但我强烈建议您阅读本书:Metaprogramming Ruby。似乎你会在那里找到很多答案。