Czy w jednej instrukcji można dodać tę samą wartość do dwóch różnych tablic? Na przykład
a = [], b = []
a,b << 10
Odpowiedzi:
1 dla odpowiedzi № 1a = [1,2]; b = [3]
a,b = [a, b].product([10]).map(&:flatten)
lub
a,b = [a,b].zip(Array.new(2,10)).map(&:flatten)
lub
a,b = [a,b].zip([10]*2).map(&:flatten)
# => a = [1, 2, 10]
, b = [3, 10]
To oczywiście uogólnia do dowolnej liczby tablic.
5 dla odpowiedzi nr 2
Jeśli chcesz zachować różne tablice, myślę, że jedyną możliwością jest zrobienie tego:
a, b = a << 10, b << 10
Oczywiście nie spełnia wymagańwpisz wartość tylko raz. Za pomocą przecinka można zapisywać wartości w notacji tablicowej. Po lewej stronie przypisania znajdują się dwie wartości, które mogą zużywać tablicę o długości do dwóch.
Co znajduje się po prawej stronie zadania? Istnieją dwie wartości zapisane w notacji tablicowej. Po dokonaniu oceny możesz napisać:
a, b = [[a], [b]]
# a <- [a]
# b <- [b]
Ewentualnie, jeśli masz się dobrze z średnikiem:
a << 10; b << 10;
4 dla odpowiedzi nr 3
Zrobiłbym to:
[a,b].each { |arr| arr.push( 10 ) }
1 dla odpowiedzi nr 4
Jak to się wykorzystuje 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
0 dla odpowiedzi № 5
Pewnie.
a,b = [],[]
c = 10
a,b = a.push(c),b.push(c)
-2 dla odpowiedzi № 6
Możesz to zrobić
a = b << 10
p a.inspect
p b.inspect
Mam nadzieję, że to rozwiąże twój problem