Dru*_*Dru 6 ruby arrays iteration
为什么这段代码'锁定'红宝石?什么是超越它的最佳方式?我发布了下面的解决方案.还有另一种方法吗?提前致谢!
码:
nums = [1, 2, 3]
nums.each { |i| nums << i + 1 }
Run Code Online (Sandbox Code Playgroud)
我的解决方案
nums = [1, 2, 3]
adjustments = []
nums.each { |i| adjustments << i + 1 }
nums += adjustments
Run Code Online (Sandbox Code Playgroud)
那是因为每个人都使用一个枚举器(所以如果你继续添加它就永远不会到达终点).
您可以在应用每个数组之前复制数组.
nums = [1, 2, 3]
nums.dup.each { |i| nums << i + 1 }
Run Code Online (Sandbox Code Playgroud)
另一种方法是追加map给出的额外元素:
nums = [1, 2, 3]
nums += nums.map { |i| i + 1 }
Run Code Online (Sandbox Code Playgroud)
nums = [1, 2, 3]
nums.each { |i| nums << i + 1 }
Run Code Online (Sandbox Code Playgroud)
您在迭代数组时将其添加到数组中,因此它永远不会完成执行。