为什么这个代码“锁定”红宝石? 什么是让过去的最好办法? 我下面贴我的解决方案。 是否有另一种方式做到这一点? 提前致谢!
码:
nums = [1, 2, 3]
nums.each { |i| nums << i + 1 }
我的解决方案:
nums = [1, 2, 3]
adjustments = []
nums.each { |i| adjustments << i + 1 }
nums += adjustments
为什么这个代码“锁定”红宝石? 什么是让过去的最好办法? 我下面贴我的解决方案。 是否有另一种方式做到这一点? 提前致谢!
码:
nums = [1, 2, 3]
nums.each { |i| nums << i + 1 }
我的解决方案:
nums = [1, 2, 3]
adjustments = []
nums.each { |i| adjustments << i + 1 }
nums += adjustments
这是因为每一个使用一个枚举(所以,如果你不断加入到它永远不会到达终点)。
您可以将每个重复之前的阵列。
nums = [1, 2, 3]
nums.dup.each { |i| nums << i + 1 }
另一种方式是通过附加映射给出额外的元素:
nums = [1, 2, 3]
nums += nums.map { |i| i + 1 }
nums = [1, 2, 3]
nums.each { |i| nums << i + 1 }
要添加到数组作为你遍历它,所以它从来没有执行完毕。