陣列和 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