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 回答