与splat ruby​​连接

时间:2013-12-31 19:56:43

标签: ruby splat

说我有

arr = [1,2,3]

如何更改此方法以便将每个参数添加到数组中?

def add(*number)
  arr << *number
end

所以add(4,5,6)产生:

arr #=> [1,2,3,4,5,6]

3 个答案:

答案 0 :(得分:4)

当通过splat接受参数时,它们总是是一个数组。所以你可以简单地将两个数组加在一起。

def add(*numbers)
  arr + numbers
end

答案 1 :(得分:2)

使用concat

def add(*nums)
  arr.concat nums
end

+

def add(*nums)
  arr + nums
end

答案 2 :(得分:0)

$arr = [1,2,3]

def add(*number)
  $arr.concat number
end

add(4,5,6)

$arr #=> [1,2,3,4,5,6]

注意:concat修改其操作的对象($arr)。加号(+)没有。

正如Tin Man所提到的,你不想使用全球来做这件事。最好只做

arr.concat [4,5,6]

在函数调用之外。更好的是:

arr += [4,5,6]