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)
#没有输出