我想为我的班级制作 DSL 结构,例如
class Car
brand :mercedes
end
我需要写什么代码?
brand
应该是一种方法。它必须在某个地方定义。您可以选择:相同的类、父类或混合模块。我喜欢模块。
module MyDSL
def brand name
puts "Got brand #{name}"
end
end
class Car
extend MyDSL
brand :mercedes
end
# >> Got brand mercedes
虽然这回答了您的具体问题,但我强烈建议您阅读这本书:Metaprogramming Ruby。似乎你会在那里找到很多答案。