陣列和 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
。
如果 value
是 Array
,則會解壓縮其元素並建立包含這些元素的新陣列。
如果 value
是單個物件,則會建立一個包含該單個物件的新陣列。
如果 value
是 nil
,則返回一個空陣列。
在某些情況下,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