/ / Dodaj tę samą wartość do dwóch lub więcej tablic - ruby

Dodaj tę samą wartość do dwóch lub więcej tablic - ruby

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 № 1
a = [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