Arbeiten mit Arrays in Ruby

Einführung

Ein array ist eine Datenstruktur, die eine Liste von Werten darstellt, die elements genannt wird. Mit Arrays können Sie mehrere Werte in einer einzigen Variablen speichern. Dadurch kann der Code komprimiert und organisiert werden, sodass er besser lesbar und leichter zu warten ist. Da Arrays Objekte mit eigenen Methoden sind, können sie die Arbeit mit Datenlisten erheblich vereinfachen.

In Ruby. Arrays können einen beliebigen Datentyp enthalten, einschließlich Zahlen, Zeichenfolgen und anderer Ruby-Objekte.

Schauen wir uns ein einfaches Beispiel an, wie leistungsfähig Arrays sein können. Stellen Sie sich vor, Sie müssten eine Liste mit E-Mail-Adressen führen. Ohne ein Array können Sie E-Mail-Adressen in Variablen wie folgt speichern:

emails.rb

email1 = "[email protected]"
email2 = "[email protected]"
email3 = "[email protected]"
email4 = "[email protected]"

Dieser Ansatz ist ausführlich und kann schnell schwierig zu pflegen sein, da er nicht sehr flexibel ist. Wenn Sie eine weitere E-Mail-Adresse hinzufügen, müssen Sie eine weitere Variable hinzufügen und nachverfolgen.

Wenn Sie ein Array verwenden, können Sie diese Daten vereinfachen:

emails.js

Anstatt fünf separate Variablen zu erstellen, haben Sie jetzt eine Variable, die alle vier E-Mail-Adressen enthält. In diesem Beispiel haben wir eckige Klammern - + [] + - verwendet, um ein Array zu erstellen, und jeden Eintrag durch ein Komma getrennt. Wenn Sie eine zusätzliche E-Mail-Adresse hinzufügen müssten, würden Sie dem Array eine andere E-Mail-Adresse hinzufügen, anstatt eine neue Variable zu erstellen und zu verwalten.

Um auf ein bestimmtes Element oder Element eines Arrays zuzugreifen, verweisen Sie auf dessen Index oder dessen Position im Array. In Ruby beginnen die Indizes bei Null. Um das erste Element aus unserem Array "+ emails +" abzurufen, hängen wir den Index des Elements in eckigen Klammern an die Variable an:

print emails[0];

In diesem Lernprogramm erstellen Sie Arrays, greifen auf die darin enthaltenen Werte zu, fügen Elemente in einem Array hinzu, ändern und entfernen sie und durchlaufen die Elemente in einem Array, um komplexere Probleme zu lösen. Beginnen wir damit, wie Arrays detaillierter erstellt werden.

Erstellen eines Arrays

Um ein Array in einem Ruby-Programm zu erstellen, verwenden Sie eckige Klammern: (+ [] +) und trennen Sie die zu speichernden Werte durch Kommas.

Erstellen Sie zum Beispiel ein Array von Haien und weisen Sie es einer Variablen zu, wie folgt:

sharks.rb

sharks = ["Hammerhead", "Great White", "Tiger"]

Sie können ein gesamtes Array mit der Anweisung "+ print" ausdrucken, wodurch der Inhalt des Arrays angezeigt wird:

print sharks
Output["Hammerhead", "Great White", "Tiger"]

Wenn Sie ein Array erstellen möchten, bei dem jeder Eintrag ein einzelnes Wort ist, können Sie die Syntax +% w {} + verwenden, mit der ein word array erstellt wird:

days = %w{Monday Tuesday Wednesday Thursday Friday Saturday Sunday}

Dies entspricht dem Erstellen des Arrays mit eckigen Klammern:

days =  ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

Beachten Sie jedoch, dass Sie mit der Methode "+% w {} +" die Anführungszeichen und Kommas überspringen können.

Arrays werden häufig verwendet, um Listen mit ähnlichen Datentypen zu gruppieren. In Ruby können Arrays jedoch beliebige Werte oder Wertemischungen enthalten, einschließlich anderer Arrays. Hier ist ein Beispiel für ein Array, das eine Zeichenfolge, einen Wert von "+ nil +", eine Ganzzahl und ein Array von Zeichenfolgen enthält:

mixed_data.rb

record = [
   "Sammy",
   null,
   7,
   [
       "another",
       "array",
   ]
]

Schauen wir uns nun an, wie wir auf Daten zugreifen, die in Arrays gespeichert sind.

Zugreifen auf Elemente in Arrays

Sie greifen auf ein Element in einem Ruby-Array zu, indem Sie auf den index des Elements in eckigen Klammern verweisen.

Erkunden wir dieses Konzept mit unserer Reihe von Haien, die der Variablen "+ sharks +" zugewiesen sind:

sharks.rb

sharks = ["Hammerhead", "Great White", "Tiger"]

Das Array + sharks + besteht aus drei Elementen. Hier ist eine Aufschlüsselung, wie jedes Element im Array "+ sharks +" indiziert wird.

Hammerhead Greate White Tiger

0

1

2

Das erste Element im Array ist "+ Hammerhead ", das mit " 0 " indiziert ist. Das letzte Element ist " Tiger ", das mit " 2 " indiziert ist. Das Zählen beginnt mit " 0 +" in Indizes, was unserer natürlichen Intuition zuwiderläuft, um mit 1 zu beginnen. Sie sollten dies berücksichtigen, bis es natürlich wird.

Mit der Methode "+ length" können Sie herausfinden, wie viele Elemente sich in einem Array befinden.

sharks.length
Output3

Obwohl die Indizes von "+ sharks" bei "+ 0 " beginnen und zu " 2 " wechseln, gibt die Eigenschaft " length" die Anzahl der Elemente im Array zurück, nämlich "+ 3 +". Es geht überhaupt nicht um die Indizes.

Wenn Sie die Indexnummer eines bestimmten Elements in einem Array ermitteln möchten, z. B. "+ seahorse ", verwenden Sie die Methode " index () +":

print sharks.index("Tiger")
Output2

Dies gibt den Index des ersten Elements zurück, das diesen Text enthält. Wird keine Indexnummer gefunden, z. B. für einen nicht vorhandenen Wert, gibt die Konsole "+ nil +" zurück.

print sharks.index("Whale")
Outputnil

Verwenden Sie den Index + -1 +, um das letzte Element eines Arrays in Ruby abzurufen:

print sharks[-1]
Output"Tiger"

Ruby bietet auch die Methoden + first + und + last +, um das erste und letzte Element ohne Verwendung von Indizes abzurufen:

puts sharks.first
puts sharks.last
Output"Hammerhead"
"Tiger"

Wenn Sie versuchen, auf einen nicht vorhandenen Index zuzugreifen, wird "+ nil +" zurückgegeben.

sharks[10]
Outputnil

Arrays können andere Arrays enthalten, die wir _ verschachtelte Arrays _ nennen. Dies ist eine Möglichkeit, zweidimensionale Datensätze in einem Programm zu modellieren. Hier ist ein Beispiel für ein verschachteltes Array:

nested_array = [
   [
       "salmon",
       "halibut",
   ],
   [
       "coral",
       "reef",
   ]
]

Um auf Elemente in einem verschachtelten Array zuzugreifen, fügen Sie eine weitere Indexnummer hinzu, die dem inneren Array entspricht. Um beispielsweise den Wert "+ coral +" aus diesem verschachtelten Array abzurufen, verwenden Sie die folgende Anweisung:

print nested_array[1][0];
Outputcoral

In diesem Beispiel haben wir auf das Array an der Position "+ 1 " der Variablen " nested_array " zugegriffen, wodurch das Array " [" coral "," reef "] " zurückgegeben wurde. Wir haben dann auf die Elemente an der Position " 0 " dieses Arrays zugegriffen, das "" coral "+" war.

Schauen wir uns nun an, wie Sie einem Array Elemente hinzufügen.

Elemente hinzufügen

Wir haben drei Elemente in unserem + sharks + Array, die von + 0 + bis + 2 + indiziert sind:

sharks.rb

sharks = ["Hammerhead", "Great White", "Tiger"]

Es gibt verschiedene Möglichkeiten, ein neues Element hinzuzufügen. Sie können dem nächsten Index einen Wert zuweisen, in diesem Fall "+ 3 +":

sharks[3] = "whale";

print sharks
Output["Hammerhead", "Great White", "Tiger", "Whale"]

Diese Methode ist jedoch fehleranfällig. Wenn Sie ein Element hinzufügen und versehentlich einen Index überspringen, wird ein "+ nil +" - Element im Array erstellt.

sharks[5] = "Sand";

print sharks;
Output["Hammerhead", "Great White", "Tiger", "Whale", , "Sand"]

Wenn Sie versuchen, auf das zusätzliche Array-Element zuzugreifen, wird sein Wert zurückgegeben, der "+ nil +" ist.

sharks[4]
Outputnil

Das Finden des nächsten verfügbaren Index in einem Array ist fehleranfällig und erfordert zusätzliche Zeit. Vermeiden Sie Fehler, indem Sie die Methode "+ push +" verwenden, mit der ein Element am Ende eines Arrays eingefügt wird:

sharks.push("thresher")
print sharks
Output["Hammerhead", "Great White", "Tiger", "Whale", nil, "Whale", ]

Sie können auch die Syntax "+ << " anstelle der Methode " push +" verwenden, um ein Element am Ende eines Arrays einzufügen:

sharks << "Bullhead"
Output["Hammerhead", "Great White", "Tiger", "Whale", nil, "Whale", "Thresher", ]

Um ein Element an den Anfang eines Arrays zu setzen, verwenden Sie die Methode + unshift () +:

sharks.unshift("Angel")
print sharks
Output[, "Hammerhead", "Great White", "Tiger", "Whale", nil, "Whale", "Thresher", "Bullhead"]

Nachdem Sie nun wissen, wie Sie Elemente hinzufügen, wollen wir sie entfernen.

Elemente entfernen

Um ein bestimmtes Element aus einem Array zu entfernen, verwenden Sie die Methoden + delete + oder + delete_at +. Im Array + sharks + haben wir versehentlich ein Array-Element + nil + erstellt. Lass es uns loswerden.

Ermitteln Sie zunächst die Position im Array. Sie können dazu die Methode + index + verwenden:

print sharks.index(nil)
Output4

Verwenden Sie dann "+ delete_at ", um das Element am Index " 4 +" zu entfernen und das Array auszudrucken:

sharks.delete_at(4)
print sharks
Output["Angel", "Hammerhead", "Great White", "Tiger", "Whale", "Thresher", "Bullhead"]

Die Methode + delete + entfernt Elemente aus einem Array, die dem von Ihnen übergebenen Wert entsprechen. Verwenden Sie es, um + Whale + aus dem Array zu entfernen:

sharks.delete("Whale")
print sharks;
Output["Angel", "Hammerhead", "Great White", "Tiger", "Thresher", "Bullhead"]

Die Methode "+ delete" entfernt alle Vorkommen des übergebenen Werts. Wenn Ihr Array also doppelte Elemente enthält, werden alle entfernt.

Die + pop + Methode entfernt das letzte Element in einem Array.

sharks.pop
print sharks;
Output["Angel", "Hammerhead", "Great White", "Tiger", "Thresher"]

+ Bullhead + wurde als letztes Element des Arrays entfernt. Verwenden Sie die Methode + shift +, um das erste Element des Arrays zu entfernen.

sharks.shift
print sharks
Output["Hammerhead", "Great White", "Tiger", "Thresher"]

Diesmal wurde "+ Angel +" vom Anfang des Arrays entfernt.

Mit + pop + und + shift + können Sie Elemente am Anfang und am Ende von Arrays entfernen. Die Verwendung von "+ pop +" wird nach Möglichkeit bevorzugt, da die übrigen Elemente im Array ihre ursprünglichen Indexnummern beibehalten.

Die Methoden + delete_at,` + pop` und + shift ändern alle das ursprüngliche Array und geben das gelöschte Element zurück. Versuchen Sie dieses Beispiel:

sharks.rb

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
deleted_at_element = sharks.delete_at(1)
popped_element = sharks.pop

puts "Deleted_at element: #{deleted_at_element}"
puts "Popped element: #{popped_element}"

puts "Remaining array: #{sharks}"
OuptutDeleted_at element: Great White
Popped element: Whale
Remaining array: ["Hammerhead", "Tiger"]

Sie kennen jetzt verschiedene Möglichkeiten, um Elemente aus einem Array zu entfernen. Schauen wir uns nun an, wie Sie das bereits vorhandene Element ändern können.

Vorhandene Elemente ändern

Um ein Element im Array zu aktualisieren, weisen Sie dem Index des Elements mit dem Zuweisungsoperator einen neuen Wert zu, genau wie Sie es mit einer regulären Variablen tun würden.

Bei einem neuen Hai-Array mit "" Hammerhead "" am Index "+ 0 " ersetzen wir "" Hammerhead "" durch "" Angel "+":

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
sharks[0] = "Angel"
print sharks;
Output["Angel", "Great White", "Tiger", "Whale"]

Um sicherzustellen, dass Sie das richtige Element aktualisieren, verwenden Sie die Methode "+ index", um das Element zuerst zu suchen, genau wie Sie es getan haben, um das Element zu finden, das Sie löschen möchten.

Schauen wir uns nun an, wie Sie mit allen Elementen im Array arbeiten.

Über ein Array iterieren

Ruby bietet viele Möglichkeiten, ein Array zu durchlaufen, und jede Methode, die Sie verwenden, hängt von der Art der Arbeit ab, die Sie ausführen möchten. In diesem Artikel erfahren Sie, wie Sie ein Array durchlaufen und jedes seiner Elemente anzeigen.

Ruby stellt die Syntax + für..in + zur Verfügung, die folgendermaßen aussieht:

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
for shark in sharks do
 puts shark
end

So funktioniert das. Für jedes Element im Array "+ sharks " weist Ruby dieses Element der lokalen Variablen " shark " zu. Wir können dann den Wert des Elements mit " puts +" drucken.

Sie werden allerdings nicht sehr oft "+ für …​ in" sehen. Ruby-Arrays sind Objekte und bieten die Methode "+ each " für die Arbeit mit Elementen. Die Methode ` each ` funktioniert ähnlich wie die Methode ` for..in +`, hat jedoch eine andere Syntax:

each.rb

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
sharks.each do |shark|
 puts shark
end

Die Methode "+ each " verwendet eine Syntax, die in der Ruby-Programmierung häufig verwendet wird. Es wird ein Ruby-Block als Argument verwendet. Ein _block_ ist ein Code, der später im Kontext der Methode ausgeführt wird. In diesem Fall lautet der Code " setzt Hai ". Das Schlüsselwort ` shark `, eingeschlossen in die Pipe-Zeichen (` | `), ist die lokale Variable, die das Element in dem Array darstellt, auf das der Block zugreifen wird. Ruby weist dieser Variablen das Element zu und führt den Code im Block aus. Die Methode " each +" wiederholt diesen Vorgang für jedes Element im Array. Das Ergebnis sieht so aus:

OutputHammerhead
Great White
Tiger
Whale

Wenn der Block nur aus einer einzelnen Zeile besteht, sehen Sie häufig, dass Ruby-Entwickler die Schlüsselwörter "+ do " und " end +" durch geschweifte Klammern ersetzen und die gesamte Anweisung in einer einzigen Zeile zusammenfassen:

each.rb

...
sharks.each {|shark| puts shark }

Dies führt zu denselben Ergebnissen, benötigt jedoch weniger Codezeilen.

Die Methode "+ each_with_index " funktioniert auf ähnliche Weise, bietet Ihnen jedoch auch Zugriff auf den Index des Array-Elements. Dieses Programm verwendet " each_with_index +", um den Index und den Wert für jedes Element auszudrucken:

each_with_index.rb

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
sharks.each_with_index do |shark, index|
 puts "The index is #{index}"
 puts "The value is #{shark}"
end

Für jedes Element im Array weist Ruby der Variablen "+ shark " das Element zu und weist der Variablen " index +" den aktuellen Index zu. Wir können dann beide Variablen im Block referenzieren.

Das Ergebnis dieses Programms sieht folgendermaßen aus:

OutputThe index is 0
The value is Hammerhead
The index is 1
The value is Great White
The index is 2
The value is Tiger
The index is 3
The value is Whale

Sie arbeiten in Ihren eigenen Programmen häufig mit den Elementen in einem Array zusammen, z. B. wenn Sie die Elemente aus einer Datenbank auf einer Website anzeigen müssen oder wenn Sie Zeilen aus einer Datei lesen und deren Inhalt verarbeiten.

Fazit

Arrays sind ein äußerst vielseitiger und grundlegender Bestandteil der Programmierung in Ruby. In diesem Lernprogramm haben Sie Arrays erstellt und auf einzelne Elemente zugegriffen. Sie haben auch Elemente in einem Array hinzugefügt, entfernt und geändert. Schließlich haben Sie zwei Möglichkeiten untersucht, wie Sie ein Array durchlaufen und dessen Inhalt anzeigen können. Diese Methode wird häufig zum Anzeigen von Daten verwendet.

Weitere Informationen zu anderen Datentypen in Ruby finden Sie im Tutorial Datentypen in Ruby verstehen.