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