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

时间:2013-09-27 09:32:58

标签: ruby

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

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

6 个答案:

答案 0 :(得分:5)

如果你想保留不同的数组,那么我认为唯一的可能就是这样做:

a, b = a << 10, b << 10

显然,它不能满足只写一次值的要求。使用逗号,可以用数组表示法写入值。在赋值的左侧是两个值,它们可以使用长度为2的数组。

作业右侧的内容是什么?有两个以数组表示法写的值。评估后你可以写:

a, b = [[a], [b]]

# a <- [a]
# b <- [b]

或者,如果你对分号很好:

a << 10; b << 10;

答案 1 :(得分:4)

我会这样做:

[a,b].each { |arr| arr.push( 10 ) }

答案 2 :(得分:1)

这是如何使用initialize_copy

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

答案 3 :(得分:1)

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)

#=&gt; a = [1, 2, 10]b = [3, 10]

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

答案 4 :(得分:0)

不确定

a,b = [],[]
c = 10

a,b = a.push(c),b.push(c)

答案 5 :(得分:-2)

你可以这样做

a = b << 10
p a.inspect
p b.inspect

希望它能解决您的问题