Ruby 扩展哈希要从YAML加载自身

Ruby 扩展哈希要从YAML加载自身,ruby,hash,Ruby,Hash,我正在创建一个类,它是一个智能哈希,知道如果给定YAML文件名,如何加载自己的值,然后对它们执行各种操作。除了第一步难倒我。鉴于此代码: class Agent < Hash def initialize super end def load_from_file(filename) if (File.file?(filename)) self = YA

我正在创建一个类,它是一个智能哈希,知道如果给定YAML文件名,如何加载自己的值,然后对它们执行各种操作。除了第一步难倒我。鉴于此代码:

    class Agent < Hash
        def initialize
            super
        end

        def load_from_file(filename)
            if (File.file?(filename)) 
                self = YAML.load_file(filename)
            end
        end
    end
类代理
…错误消息是“无法更改self的值”


您将如何创建从文件加载自身的哈希?

您非常接近。与自我分配不同,您只想使用:

类代理
#replace
将调用散列的键和值替换为传递的散列中的键和值-这正是您在本例中想要的。但是,在调用
#replace
之前,请确保验证YAML数据确实是一个
散列

class Agent < Hash
    def initialize
      super
    end

    def load_from_file(filename)
      if (File.file?(filename))
        replace YAML.load_file(filename)
      end
    end
end