为什么shift(1)返回一个带括号的数字,但shift()不是?

时间:2013-11-02 03:49:12

标签: ruby arrays shift

例如:

def ding_dong()
    p @arr.shift(1)
    p @arr.shift
end

如果我打电话给:

ding_dong([0,1,2,3,4])

为什么第一个put返回“[0]”而第二个返回“1”而没有括号?

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个切片元素时),调用者必须编写特殊情况代码。