如何解冻哈希?
How to unfreeze the Hash?
我有一个来自 GraphQL 的对象。我需要处理一个字段,然后 return 一个哈希。
为此,我最初尝试使用 to_h
方法。但是当我尝试更改该字段中的值时,出现了这个错误:
FrozenError - can't modify frozen Hash
然后我想到了使用dup
方法的想法。这个方法好像"unfreeze"原来的对象:
object.to_h.dup
但这对 "deep" 字段没有帮助。对于 "deep" 字段,我必须使用本地 dup
方法。
请问有没有更正确的解决方法?
Rails(或者 ActiveSupport,如果你想学究气的话)将 deep_dup
方法修补到 Hash
中,后者执行深拷贝。所以你应该可以说:
object.to_h.deep_dup
获得哈希的完全可变版本。
我有一个来自 GraphQL 的对象。我需要处理一个字段,然后 return 一个哈希。
为此,我最初尝试使用 to_h
方法。但是当我尝试更改该字段中的值时,出现了这个错误:
FrozenError - can't modify frozen Hash
然后我想到了使用dup
方法的想法。这个方法好像"unfreeze"原来的对象:
object.to_h.dup
但这对 "deep" 字段没有帮助。对于 "deep" 字段,我必须使用本地 dup
方法。
请问有没有更正确的解决方法?
Rails(或者 ActiveSupport,如果你想学究气的话)将 deep_dup
方法修补到 Hash
中,后者执行深拷贝。所以你应该可以说:
object.to_h.deep_dup
获得哈希的完全可变版本。