簡體   English   中英

如何在Ruby中使用Symbol引用類?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM