我在使用这个循环时遇到了问题:
a = [1,2,3,4]
a.each{puts "#{a.shift}"}
Run Code Online (Sandbox Code Playgroud)
我只得到1,2.任何人都可以帮助我吗?
Array#shift从数组中删除第一个值并返回它.因此,当您循环遍历数组时,数组将被修改.
该each方法似乎基本上循环,直到索引大于或等于数组的长度.因为您在循环时从数组中删除元素,所以数组的长度会减小.当你删除了两个元素时,索引为2,长度为2,所以.each循环退出.
即:
Index: 0
Array: [1, 2, 3, 4]
Print: 1
Index: 1
Array: [2, 3, 4]
Print: 2
Index: 2 # Exit here
Array: [3, 4]
Run Code Online (Sandbox Code Playgroud)