Ich habe es versucht:
somearray = ["some", "thing"]
anotherarray = ["another", "thing"]
somearray.push(anotherarray.flatten!)
Ich erwartete
["some", "thing", "another", "thing"]
aber bekam
["some", "thing", nil]
Ich habe es versucht:
somearray = ["some", "thing"]
anotherarray = ["another", "thing"]
somearray.push(anotherarray.flatten!)
Ich erwartete
["some", "thing", "another", "thing"]
aber bekam
["some", "thing", nil]
Die Frage lautet im Wesentlichen: "Wie verkettet man Arrays in Ruby". Die Antwort ist natürlich die Verwendung von concat
ou +
wie in fast jeder Antwort erwähnt.
Eine natürliche Erweiterung der Frage wäre "wie man zeilenweise Verkettung von 2D-Arrays in Ruby durchführen". Als ich nach "ruby concatenate matrices" googelte, war diese SO-Frage das Top-Ergebnis, also dachte ich, ich würde meine Antwort auf diese (nicht gestellte, aber verwandte) Frage hier für die Nachwelt hinterlassen.
In einigen Anwendungen möchten Sie vielleicht zwei 2D-Arrays zeilenweise "verketten". Etwa so,
[[a, b], | [[x], [[a, b, x],
[c, d]] | [y]] => [c, d, y]]
Das ist so etwas wie die "Vergrößerung" einer Matrix. Ich habe diese Technik zum Beispiel verwendet, um aus einer Reihe kleinerer Matrizen eine einzige Adjazenzmatrix zu erstellen, die einen Graphen darstellt. Ohne diese Technik hätte ich die Komponenten in einer Weise iterieren müssen, die fehleranfällig oder frustrierend gewesen wäre. Vielleicht hätte ich eine each_with_index
zum Beispiel. Stattdessen habe ich kombiniert zip y abflachen. wie folgt,
# given two multi-dimensional arrays that you want to concatenate row-wise
m1 = [[:a, :b], [:c, :d]]
m2 = [[:x], [:y]]
m1m2 = m1.zip(m2).map(&:flatten)
# => [[:a, :b, :x], [:c, :d, :y]]
somearray = ["some", "thing"]
anotherarray = ["another", "thing"]
somearray + anotherarray # => ["some", "thing", "another", "thing"]
somearray.concat anotherarray # => ["some", "thing", "another", "thing"]
somearray.push(anotherarray).flatten # => ["some", "thing", "another", "thing"]
somearray.push *anotherarray # => ["another", "thing", "another", "thing"]
Wenn die neuen Daten ein Array oder ein Skalar sein könnten und Sie verhindern wollen, dass die neuen Daten verschachtelt werden, wenn es sich um ein Array handelt, ist der Splat-Operator großartig! Er gibt einen Skalar für einen Skalar und eine ungepackte Liste von Argumenten für ein Array zurück.
1.9.3-p551 :020 > a = [1, 2]
=> [1, 2]
1.9.3-p551 :021 > b = [3, 4]
=> [3, 4]
1.9.3-p551 :022 > c = 5
=> 5
1.9.3-p551 :023 > a.object_id
=> 6617020
1.9.3-p551 :024 > a.push *b
=> [1, 2, 3, 4]
1.9.3-p551 :025 > a.object_id
=> 6617020
1.9.3-p551 :026 > a.push *c
=> [1, 2, 3, 4, 5]
1.9.3-p551 :027 > a.object_id
=> 6617020
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.