是否可以在一个语句中将相同的值附加到两个不同的数组?例如,
a = [], b = []
a,b << 10
如果您想保留不同的数组,那么我认为唯一的可能性是这样做:
a, b = a << 10, b << 10
显然,它不满足只写入一次值的要求。使用逗号可以将值写入数组表示法。赋值的左侧是两个值,它们可以使用长度为 2 的数组。
作业的右侧是什么?有两个以数组表示法写入的值。评估后你可以写:
a, b = [[a], [b]]
# a <- [a]
# b <- [b]
或者,如果您可以使用分号:
a << 10; b << 10;
我会这样做:
[a,b].each { |arr| arr.push( 10 ) }
这是如何使用的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
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]
这显然可以推广到任意数量的数组。
当然。
a,b = [],[]
c = 10
a,b = a.push(c),b.push(c)
你可以这样做
a = b << 10
p a.inspect
p b.inspect
希望它能解决你的问题