Ruby Ruby 1.8.7 delete_if 抛错 can't modify frozen array

shawzt · October 30, 2013 · Last by shawzt replied at February 23, 2014 · 2722 hits

代码

features.delete_if {|f| switch_false.include?(f.name)}

求解,delete_if 怎么会出现 can't modify frozen array 这样的错误

求帮助?

你的 features 被 freeze 了吧

@zj0713001 代码中没有显式地去 freeze,我在想是不是 delete_if 在迭代过程中会出现有如此的行为??

你自己执行features.frozen?看看?

终于在之后再次重现相同问题的时候,找到了根本原因:该变量从 rails.cache 取出就被 freeze.可以使用 dup 解决

You need to Sign in before reply, if you don't have an account, please Sign up first.