ruby - 将哈希合并到哈希子类 - 确保嵌套哈希具有子类属性

标签 ruby inheritance hash

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

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 的属性。有人知道确保这一点的快速有效方法吗?

最佳答案

我可能会模仿 ActiveSupport 的 HashWithIndifferentAccess 所做的事情,即覆盖 update() 以及构造函数。

参见 https://github.com/rails/rails/blob/master/activesupport/lib/active_support/hash_with_indifferent_access.rb实现。

关于ruby - 将哈希合并到哈希子类 - 确保嵌套哈希具有子类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12414507/

相关文章:

Ruby Aws::Route53::没有标签的对象的客户端过滤器

ruby - 如何将SASS设置设置为noCache = True?使用 Gulp 和 gulp-ruby-sass

c++ - 继承与纯虚函数混在一起,有什么方法可以不必重新定义它们呢?

c++ - 如何将类传递给方法,并从基类检测继承者?

perl - 如何在 Perl 中惯用地访问单个元素哈希的第一个元素?

security - 使用 .NET Core 生成哈希

ruby-on-rails - NilClass :Class (Using formtastic in Rails 3. 0.3,Ruby 1.9.2 的未定义方法 `model_name')

ruby-on-rails - 如果 YAML 文件不存在或无法在 Rails 中加载,请进行救援

c# - 如何创建基本字符类的实例

algorithm - IPFS : is it possible? 中的哈希冲突/限制