数组和 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