1.用于并行赋值
当右侧为一个数组时,此数组会被“自动解包”。
#左侧数量等于右侧数量
(a, b) = [1, 2]
#简写(省略左侧的圆括号)
a, b = [1, 2]
p a, b # 1 2
#左侧数量小于右侧数量
(a, b) = [1, 2, 3]
#简写(省略左侧的圆括号)
a, b = [1, 2, 3]
p a, b # 1 2
#右侧多余的值会被打包成数组
(a, b, *c) = [1, 2, 3, 4, 5]
p a, b, c # 1 2 [3, 4, 5]
#左侧数量大于右侧数量
(a, b) = [1]
#简写(省略左侧的圆括号)
a, b = [1]
p a, b # 1 nil
#注意:左侧的圆括号()不可以省略。
a, (b, c) = 1, [2, 3]
p a, b, c # 1 2 3
2.用于函数参数
#注意:形参的圆括号()不可以省略。
#形参数量等于实参数量
def f((a, b))
p a, b
end
f([1, 2]) # 1 2
#形参数量小于实参数量
def f((a, b))
p a, b
end
f([1, 2, 3]) # 1 2
#右侧多余的值会被打包成数组
def f((a, b, *c))
p a, b, c
end
f([1, 2, 3, 4, 5]) # 1 2 [3, 4, 5]
#形参数量等于实参数量
def f((a, b, c))
p a, b, c
end
f([1, 2]) # 1 2 nil
#注意:形参的圆括号()不可以省略。
def f(a, (b, c))
p a, b, c
end
f(1, [2, 3]) # 1 2 3
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/rubyexp/36740.html