2

我有一个哈希子类,我通常想从另一个哈希初始化它的数据并使用它:

class ValidatedJson < Hash
    @schema = {}
    def initialize(hash = {})
        super
        JSON::Validator.validate!(@schema, hash, :validate_schema => true)
        self.update(hash)
    end

    def [](key)
        self.fetch(key)
    end
end

但是,单独使用 self.update 时,任何嵌套哈希都将是 Hash 类型,而不是具有我的子类 ValidatedJson 的属性。有人知道确保这一点的快速有效方法吗?

4

1 回答 1

2

我可能会效仿 ActiveSupport 的HashWithIndifferentAccess作用,即覆盖update()以及构造函数。

有关它们的实现,请参见https://github.com/rails/rails/blob/master/activesupport/lib/active_support/hash_with_indifferent_access.rb 。

于 2012-09-26T02:58:54.527 回答