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