我有一个 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()
以及构造函数。
关于ruby - 将哈希合并到哈希子类 - 确保嵌套哈希具有子类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12414507/