0

多くの異なるクラスを持つ単一のモジュールがあります(個別のファイルに分割されています)。各クラスには同じセットの がありますが、ブロックattr_accessorを繰り返す代わりにそれを再利用するにはどうすればよいでしょうか?attr_accessor

私が現在していることは....

# dog.rb
module Animals
   class Dog
      attr_accessor :name, :color, :age 
   end
end

# cat.rb
module Animals
   class Cat
      attr_accessor :name, :color, :age 
   end
end

# rodent.rb
module Animals
   class Rodent
      attr_accessor :name, :color, :age 
   end
end

私は運が悪いのでこれをやってみました...

# animals.rb
module Animals
   attr_accessor :name, :color, :age 
end

アプリ全体でこれらのモジュールに直接アクセスする必要があります (これは Rails アプリです)。例えば:Animals::Dog.give_water

4

1 に答える 1

7

モジュールの使い方Animalが間違っています。それを名前空間として使用しても、目的には何の役にも立ちません。それらを含める必要があります。

module Animals
  attr_accessor :name, :color, :age 
end

class Dog
  include Animals
end

class Cat
  include Animals
end

class Rodent
  include Animals
end

Animalまたは、クラスに変換して、そこからサブクラス化することもできます。

class Animals
  attr_accessor :name, :color, :age 
end

class Dog < Animals
end

class Cat < Animals
end

class Rodent < Animals
end

ところで、クラスはすでに複数のインスタンスを持つ可能性があることを暗示しているため、クラスに複数形の名前を付けることは冗長です。そして、あなたもそれについて矛盾しています。

于 2013-08-08T14:11:21.623 に答える