Ruby 将相同的值附加到两个或多个数组

Ruby 将相同的值附加到两个或多个数组,ruby,Ruby,是否可以在一条语句中将相同的值附加到两个不同的数组中?例如 a = [], b = [] a,b << 10 a=[],b=[] a、 b如果您想保留不同的阵列,那么我认为唯一的可能性是: a, b = a << 10, b << 10 a,b=a当然 你可以这样做 a = b << 10 p a.inspect p b.inspect a=b我会这样做: [a,b].each { |arr| arr.push( 10 ) } 如何使用

是否可以在一条语句中将相同的值附加到两个不同的数组中?例如

a = [], b = [] 
a,b << 10 
a=[],b=[]

a、 b如果您想保留不同的阵列,那么我认为唯一的可能性是:

a, b = a << 10, b << 10
a,b=a当然

你可以这样做

a = b << 10
p a.inspect
p b.inspect
a=b我会这样做:

[a,b].each { |arr| arr.push( 10 ) }
如何使用:

a=[]
b=[]
a、 对象id#=>11512248
b、 对象id#=>11512068
b、 发送(:初始化拷贝,a[10]
b#=>[10]
a、 对象id#=>11512248
b、 对象id#=>11512068

#=>
a=[1,2,10]
b=[3,10]


这显然可以推广到任意数量的数组。

检查
a.\uuu id\uuuu
b.\uu id\uuuuu
。一切都很好,我不同意你的评论。看到这个投票结果a,b=a你之前的评论有误导性…你只是在没有解释的情况下发表评论。@Veerasekar你正在将
b
分配给
a
。如果你你的代码不会导致
[:a,10]
[:b]
而不是
[:a,10]
[:b,10
],而是
[:a,10]
[:a,10
],也就是说,
a
b
都使用相同的数组。注意:我认为巧妙地使用Ruby的赋值解析、逗号等运算符来容纳更少的字符,在维护代码时会适得其反(但这不是我的答案的一部分,更适合codereview.stackexchange.com)最危险的方法是这样做。这不等于分号版本是最好的吗。
value=10;@Stefan严格地说,使用分号,你会得到两个语句,而不是OP要求的一个。@toro2k,我相信这是@Stefan的观点,但我会站在platzhirsch一边,因为并行赋值对你来说不是糖一对赋值(例如,
x,y=y,x
)。代码
a=[],b=[]
的行为可能与您预期的不同:
a=[[],[]&&b=[]
a,b = [],[]
c = 10

a,b = a.push(c),b.push(c)
a = b << 10
p a.inspect
p b.inspect
[a,b].each { |arr| arr.push( 10 ) }
a=[]
b=[]
a.object_id # => 11512248
b.object_id # => 11512068

b.send(:initialize_copy,a << 10)
a # => [10]
b # => [10]
a.object_id # => 11512248
b.object_id # => 11512068
a = [1,2]; b = [3]

a,b = [a, b].product([10]).map(&:flatten)
a,b = [a,b].zip(Array.new(2,10)).map(&:flatten)
a,b = [a,b].zip([10]*2).map(&:flatten)