例如:
def ding_dong()
p @arr.shift(1)
p @arr.shift
end
如果我这样称呼:
ding_dong([0,1,2,3,4])
为什么第一个 puts 返回 "[0]" 而第二个返回 "1" 而没有括号?
从Array#shift的文档中:
shift → obj 或 nil
shift(n) → new_ary
返回 self 的第一个元素并将其删除(将所有其他元素向下移动一个)。如果数组为空,则返回 nil。
如果给定数字 n,则返回前 n 个元素(或更少)的数组,就像 array.slice!(0, n) 一样。
尝试使用shift(0)
andshift(2)
看看会发生什么。
当接受任何数字时,返回一个数组是最有意义的,即使结果是单个元素。否则,调用者必须为 n 为 0 或 1(或当有 0 或 1 个切片元素时)编写特殊情况代码。