Shp*_*ord 0 ruby module class attr-accessor
我有一个包含许多不同类的单个模块(分成单独的文件).每个类都有相同的集合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
Run Code Online (Sandbox Code Playgroud)
我试着这样做没有运气......
# animals.rb
module Animals
attr_accessor :name, :color, :age
end
Run Code Online (Sandbox Code Playgroud)
我需要直接在我的应用程序中访问这些模块(这是一个Rails应用程序).例如:Animals::Dog.give_water
您对该模块的使用Animal是错误的.将它用作命名空间对您的目的没有任何好处.你应该包括它们.
module Animals
attr_accessor :name, :color, :age
end
class Dog
include Animals
end
class Cat
include Animals
end
class Rodent
include Animals
end
Run Code Online (Sandbox Code Playgroud)
或者,您可以Animal转换为类,并从中进行子类化.
class Animals
attr_accessor :name, :color, :age
end
class Dog < Animals
end
class Cat < Animals
end
class Rodent < Animals
end
Run Code Online (Sandbox Code Playgroud)
顺便说一下,类已经暗示它可能有多个实例,因此为类创建一个复数名称是多余的.你也不一致.
| 归档时间: |
|
| 查看次数: |
5919 次 |
| 最近记录: |