1.用于变量赋值
展开运算符 *
支持任何实现了 to_a()
方法的对象。
#数组
#注意:星号*可以被省略。
a, b, c = *[1, 2, 3]
a, b, c = [1, 2, 3]
#注意:星号*不可以被省略。
a, b, c = 1, *[2, 3]
p a, b, c # 1 2 3
#哈希
a, b, c = *{a:1, b: 2, c: 3}
p a, b, c # [:a, 1] [:b, 2] [:c, 3]
#集合
a, b, c = *Set[1, 2, 3]
p a, b, c # 1 2 3
#范围
a, b, c = *1..3
p a, b, c # 1 2 3
2.用于方法实参
展开运算符 *
支持任何实现了 to_a()
方法的对象。
展开运算符 **
支持任何实现了 to_hash()
方法的对象。
#数组
def f(a, b, c)
p a, b, c
end
#注意:星号*不可以被省略。
f(*[1, 2, 3]) # 1 2 3
#注意:星号*不可以被省略。
f(1, *[2, 3]) # 1 2 3
#哈希
def f(a:, b:, c:)
p a, b, c
end
h = {a: 1, b: 2, c: 3}
f(**h) # 1 2 3
#集合
def f(a, b, c)
p a, b, c
end
f(*Set[1, 2, 3]) # 1 2 3
#范围
def f(a, b, c)
p a, b, c
end
f(*1..3) # 1 2 3
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/rubyexp/37522.html