[英]How do I refer to a class with a Symbol in Ruby?
我想創建一個哈希,其鍵指向一個類的符號,並為某個數組提供值,該數組具有例如指向該特定類的顏色。 到目前為止,我的實現是這樣的:
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")
您可以使用字符串作為哈希的鍵,而不是符號。 您可以使用class.name
訪問類(字符串)的class.name
。
我想如果您希望將它們class.name.to_sym
符號,則可以調用class.name.to_sym
並將鍵設置為例如:Dog
。 請注意,前導冒號后面的符號與類名相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.