Ruby数组和splat(*)运算符

示例

的*操作者可用于解压缩变量和数组,使得它们可以作为一个独立的参数的方法进行传递。

如果尚未将单个对象包装在Array中,则可以使用它:

def wrap_in_array(value)
  [*value]
end

wrap_in_array(1)
#> [1]

wrap_in_array([1, 2, 3])
#> [1, 2, 3]

wrap_in_array(nil)
#> []

在上面的示例中,该wrap_in_array方法接受一个参数value。

如果value为Array,则将其元素解压缩,并创建一个包含这些元素的新数组。

如果value是单个对象,则会创建一个包含该单个对象的新数组。

如果value为nil,则返回一个空数组。

splat运算符在某些情况下在方法中用作参数时特别方便。例如,它允许nil,单个值和数组以一致的方式处理:

def list(*values)
 values.eachdo |value|
    # 做有价值的事情
    puts value
  end
end

list(100)
#> 100

list([100, 200])
#> 100
#> 200

list(nil)
# 没有输出