0

例如:

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

如果我这样称呼:

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

为什么第一个 puts 返回 "[0]" 而第二个返回 "1" 而没有括号?

4

1 回答 1

3

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

于 2013-11-02T03:53:21.470 回答