【发布时间】:2021-01-09 03:06:42
【问题描述】:
我试图在 Ruby 中冻结嵌套的 HashWithIndifferentAccess 并遇到了一些意外行为。如果不使用.with_indifferent_access 包装内部或外部哈希,它可以按预期工作:
v = { 'a' => { 'b' => 2 }.freeze }.freeze
v['a'].frozen? => true
v_1[:a] 和 v_2[:a] 都是 HashWithIndifferentAccess 的,但只有 v_1[:a] 被冻结。这是为什么呢?
v_1 = { 'a' => { 'b' => 2 }.with_indifferent_access.freeze }.with_indifferent_access.freeze
v_1[:a].frozen? => true
v_2 = { 'a' => { 'b' => 2 }.freeze }.with_indifferent_access.freeze
v_2[:a].frozen? => false
提前致谢!
【问题讨论】:
标签: ruby-on-rails ruby activesupport