数组和 splat() 运算符

*运算符可用于解包变量和数组,以便它们可以作为单个参数传递给方法。

这可用于包装数组中的单个对象(如果尚未包含):

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

如果 valueArray,则会解压缩其元素并创建包含这些元素的新数组。

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

如果 valuenil,则返回一个空数组。

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

def list(*values)
  values.each do |value|
    # do something with value
    puts value
  end
end

list(100)
#> 100

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

list(nil)
# nothing is outputted