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

これはあなたの具体的な質問に答えますが、私はこの本を手に入れることを強くお勧めします:メタプログラミングRuby。そこにはたくさんの答えがあるようです。

于 2012-05-26T19:49:38.637 に答える