我想创建一个哈希,其键引用类的符号,值为某个数组,例如,引用该特定类的颜色。截至目前,我的实现是这样的:
module DomesticAnimal
attr_accessor :name
def eat(food)
puts "Eating #{food}"
end
end
module AnimalColours #Lo separo para realizar más abstracción
@@colours = {
:dog => ["White", "Grey", "Black", "Brown"],
:cat => ["White", "Black"],
}
def self.hasColour(type, colour)
if @@colours[type] != nil
@@colours[type].each do |x|
return true unless x != colour
end
end
return false
end
end
class Dog
include DomesticAnimal
def initialize(name, colour)
@name = name
if AnimalColours.hasColour(:dog, colour)
@colour = colour
else
raise "Colour error"
end
end
def goOut(place)
puts "#{name} when out for a walk to #{place}"
end
end
dog = Dog.new("Juan", "Black")
dog.goOut("the park")
答案 0 :(得分:0)
您可以使用字符串作为哈希的键而不是符号。
您可以使用class.name
访问类的名称(字符串)。
我想如果你想让它们成为符号,你可以拨打class.name.to_sym
并让密钥为:Dog
。请注意,前导冒号后的符号与类名相同。