我有一个包含许多不同类的单个模块(分成单独的文件)。每个类都有相同的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
答案 0 :(得分: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
顺便说一下,一个类已经暗示它可能有多个实例,因此为类创建一个复数名称是多余的。你也不一致。