4

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

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

6 回答 6

5

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

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

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

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

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

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

或者,如果您可以使用分号:

a << 10; b << 10;
于 2013-09-27T09:36:36.190 回答
4

我会这样做:

[a,b].each { |arr| arr.push( 10 ) }
于 2013-09-27T09:38:42.640 回答
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
于 2013-09-27T09:48:38.480 回答
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)

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

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

于 2013-09-28T03:13:52.407 回答
0

当然。

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

a,b = a.push(c),b.push(c)
于 2013-09-27T09:37:48.120 回答
-2

你可以这样做

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

希望它能解决你的问题

于 2013-09-27T09:38:20.620 回答