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

shawzt · 2013年10月30日 · 最后由 shawzt 回复于 2014年02月23日 · 2722 次阅读

代码

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 解决

需要 登录 后方可回复, 如果你还没有账号请 注册新账号