In Ruby bezieht sich ein Hash auf eine Sammlung von Schlüsselwertpaaren. Es ähnelt einem Array in dem Sinne, dass es mehrere verwandte Werte speichern kann, aber die Indizierung erfolgt eher über Schlüssel als über Ganzzahlen. Wenn Sie mit Python -Programmiersprachen vertraut sind, denken Sie an Ruby Hashes als Python -Wörterbücher.
Auf der anderen Seite bezieht sich ein Array auf eine geordnete Sammlung von Werten. Sie können sich ein Array als eine Liste von Elementen mit einem bestimmten Index oder einer bestimmten Position für jedes Element vorstellen.
Sie können auf solche Fälle stoßen, in denen Sie einen Index auf einen Ruby -Hash erweitern müssen. Dies erleichtert es einfach, eine bestimmte Wertemenge in einem Array einem entsprechenden Wörterbuch-ähnlichen Format zuzuordnen.
Dieses Tutorial umfasst verschiedene Methoden, um ein bestimmtes Ruby -Array in einen Hash umzuwandeln.
Beispielarray
Um zu demonstrieren, wie wir ein Array in Ruby in einen Hash umwandeln können, werden wir mit dem Beispielarray arbeiten, das in Folgendes bereitgestellt wird:
arr = [1, 'MySQL', 2, 'postgreSql', 3, 'Sqlite']
In diesem Fall möchten wir das Array in einen Hash umwandeln, in dem der numerische Wert als Schlüssel fungiert, und die Stringwerte sind der Wert des Hashs.
Konvertieren eines Arrays in Hash mit der TO_H -Methode
In den neuesten Ruby-Versionen haben wir Zugriff auf die TO_H-Methode, mit der wir ein zweidimensionales Array in einen Ruby-Hash umwandeln können.
Daher müssen wir zuerst das eindimensionale Array in ein zweidimensionales Array umwandeln.
Wir können dies mit der Methode ENGE_SLICE erreichen. Diese Methode ist im Ruby Enumerable -Modul definiert, das in der Array -Klasse enthalten ist. Es ermöglicht es uns, über die Elemente eines Arrays in Scheiben einer bestimmten Größe zu iterieren.
Wir können diese Methode verwenden, wie im folgenden Code gezeigt:
arr.ENGER_SLICE (2)
=> #
Dies gibt ein Enumerator -Objekt zurück, das wir mit der TO_A -Methode in ein Array konvertieren können, wie im folgenden dargestellt:
IRB (Haupt): 004: 0> arr.ENGER_SLICE (2).zu einem
=> [[1, "MySQL"], [2, "postgreSQL"], [3, "SQLite"]]
Dies sollte uns ein zweidimensionales Array geben, wie zuvor gezeigt.
Schließlich können wir die Werte in a wie im Folgenden gezeigt umwandeln:
IRB (Haupt): 005: 0> arr.ENGER_SLICE (2).zu einem.to_h
Der resultierende Hash ist wie folgt:
=> 1 => "mySQL", 2 => "postgreSql", 3 => "SQLite"
Konvertieren eines Arrays in Hash mit der Hash :: [] -Methode in Hash
Die :: [] Notation in der Ruby -Hash -Klasse ermöglicht es uns, einen neuen Hash mit den bereitgestellten Werten zurückzugeben.
Um ein Array mit dieser Methode in einen Hash umzuwandeln, können wir den folgenden Befehl verwenden:
IRB (Haupt): 011: 0> Hash ['1', 'MySQL', '2', 'postgresql', '3', 'Sqlite']
=> "1" => "mySQL", "2" => "postgesql", "3" => "Sqlite"
Dies sollte einen neuen Hash zurückgeben, ohne das Array in ein zweidimensionales Array umzuwandeln müssen.
Abschluss
Wir haben besprochen, wie Sie die Methode Array#to_h und Hash :: [] verwenden können, um ein Array in einen Hash in der Ruby -Programmiersprache umzuwandeln.