如何创建dsl

时间:2012-05-26 19:44:53

标签: ruby dsl

我想为我的班级做一些类似

的DSL构建
class Car 
  brand :mercedes
end

我需要写什么代码?

1 个答案:

答案 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。似乎你会在那里找到很多答案。