ruby - 是否有 ruby​​ oneliner 可以在没有临时副本的情况下连接嵌套数组?

标签 ruby multidimensional-array compound-assignment

a = [ 'a' ]
b = [ 'b' ]

def c

    return [ 'c' ], [ 'd' ]

end

a, b += c # -> would be awesome, but gives syntax error

a, b = a + c.first, b + c.last # clunky and will call method twice...

# desired result
#
a == [ 'a', 'c' ]
b == [ 'b', 'd' ]

现在我经常发现自己在写:

t, tt = c
a += t
b += tt

但如果你问我,那有点丑陋。

编辑:单元素数组似乎让一些人感到困惑,因为下面的几个答案并没有回答这个问题。我通过让每个数组至少有 2 个元素使它更清楚。

Edit2:我提交了一份 feature request用 ruby​​ 核心实现对解构数组的复合赋值。

最佳答案

a,b = [a+b,c].transpose
  #=> [["a", "c"], ["b", "d"]] 
a #=> ["a", "c"] 
b #=> ["b", "d"] 

关于ruby - 是否有 ruby​​ oneliner 可以在没有临时副本的情况下连接嵌套数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38428151/

相关文章:

ruby - 在 Shoes.app 中使文本透明

Ruby 1.9.2 补丁级别 180 - libyaml 破坏了 yaml 节点引用

php - 通过比较值 PHP 从两个不同的数组创建一个大数组

c - karger Minimum Cut 算法因大输入而崩溃

c - Ruby C 扩展 rb_str_new2 似乎返回 false

ruby-on-rails - 将 premailer gem 与 Rails 2.X 应用程序集成

c - 动态分配的二维数组运行时错误

python - 在python中可能有多个复合赋值

c - 为什么unsigned char之间的加法会发生隐式转换?

c++ - 引发异常:读取访问冲突。这是对象数组中的nullptr