1

我想为我的班级制作 DSL 结构,例如

class Car 
  brand :mercedes
end

我需要写什么代码?

4

1 回答 1

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

于 2012-05-26T19:49:38.637 回答