并行方法调用如变量赋值

时间:2017-03-17 13:23:46

标签: arrays ruby

变量赋值可以像:

a, b = 1, 3

给定数组:

a, b = [], []

是否有类似的方法将多个值推送到数组中,以便它等同于:

a << 1
b << 5

看起来像是:

a, b << 1 , 5

1 个答案:

答案 0 :(得分:1)

不,没有支持的“平行铲”操作员。

存在并行赋值,因为人们通常希望从函数中获取多个返回值并将它们保存到变量中以供以后使用:

evens, odds = group_by_parity([1,2,3,4,5])

需要将每个项目从数组中铲除到单独的变量中的情况要少得多。如果您真的想要将函数的返回值铲除到多个变量而不创建新变量,则可以执行以下操作:

group_by_parity([1,2,3,4,5]).tap do |results|
  evens << results[0]
  odds << results[1]
end

如果你感觉不可救药,我想你可以这样做:

a[a.length], b[b.length] = 1, 5

但是我想不出那种被认为是好代码的情况。