Verwendung von Array-Methoden in Ruby

Einführung

Mit Arrays können Sie Datenlisten in Ihren Programmen darstellen. Sobald Sie Daten in einem Array haben, können Sie diese sortieren, Duplikate entfernen, die Reihenfolge umkehren, Abschnitte des Arrays extrahieren oder Arrays nach bestimmten Daten durchsuchen. Sie können ein Array auch in ein string konvertieren, ein Array von Daten in ein anderes transformieren und ein Rollup ausführen ein Array in einen einzelnen Wert.

In diesem Tutorial lernen Sie einige der praktischsten Methoden kennen, die Ruby für die Arbeit mit in Arrays gespeicherten Daten bietet.

Während Sie dieses Tutorial durcharbeiten, sehen Sie einige Methoden, die mit einem Ausrufezeichen ("+! +") Enden. Diese Methoden haben häufig Nebenwirkungen, z. B. das Mutieren des ursprünglichen Werts oder das Auslösen von Ausnahmen. Viele Methoden, die Sie in diesem Lernprogramm verwenden, haben eine verwandte Methode mit diesem Suffix.

Sie werden auch auf Methoden stoßen, die mit einem Fragezeichen ("+? +") Enden. Diese Methoden geben einen booleschen Wert zurück.

Diese Namenskonvention wird in Ruby verwendet. Dies wird auf Programmebene nicht durchgesetzt. Dies ist nur eine andere Möglichkeit, um festzustellen, was Sie von der Methode erwarten können.

Beginnen wir mit unserer Untersuchung der Array-Methoden, indem wir uns verschiedene Möglichkeiten ansehen, auf Elemente zuzugreifen

Zugriff auf Elemente

Wenn Sie das Tutorial How To Work with Arrays in Ruby bereits befolgt haben, wissen Sie, dass Sie darauf zugreifen können Ein einzelnes Element mit seinem Index, der auf Null basiert, wie folgt:

sharks = ["Tiger", "Great White", "Hammerhead", "Angel"]
sharks[0]    # "Tiger"
sharks[1]    # "Great White"
sharks[-1]   # "Angel"

Sie können sich auch daran erinnern, dass Sie die Methoden + first + und + last + verwenden können, um das erste und das letzte Element eines Arrays zu erfassen:

sharks = ["Tiger", "Great White", "Hammerhead", "Angel"]
sharks.first   # "Tiger"
sharks.last    # "Angel"

Wenn Sie auf ein Element zugreifen, das nicht existiert, erhalten Sie "+ nil ". Wenn Sie stattdessen eine Fehlermeldung erhalten möchten, verwenden Sie die Methode " fetch +":

sharks.fetch(42)
OutputIndexError: index 42 outside of array bounds: -4...4

Wenn Sie lieber Ihre eigenen Standardeinstellungen festlegen möchten, anstatt einen Fehler auszulösen, können Sie dies auch tun:

sharks.fetch(42, "Nope")     # "Nope"

Schauen wir uns nun an, wie Sie mehr als ein Element aus einem Array erhalten.

Abrufen mehrerer Elemente

Es kann vorkommen, dass Sie anstelle eines einzelnen Elements eine Teilmenge von Werten aus Ihrem Array abrufen möchten.

Wenn Sie einen Startindex gefolgt von der Anzahl der gewünschten Elemente angeben, erhalten Sie ein neues Array mit diesen Werten. Sie können beispielsweise die beiden mittleren Einträge aus dem Array + sharks + wie folgt abrufen:

sharks = ["Tiger", "Great White", "Hammerhead", "Angel"]
sharks[1,2]   # ["Great White", "Hammerhead"]

Wir beginnen mit dem Index "+ 1 ", der "" Great White "" ist, und wir geben an, dass wir " 2 " - Elemente wollen, sodass wir ein neues Array erhalten, das "" Great White "+" und "enthält + "Hammerhead" + `.

Sie können die Methode + slice + verwenden, um dasselbe zu tun:

sharks = ["Tiger", "Great White", "Hammerhead", "Angel"]
sharks.slice(1,2)   # ["Great White", "Hammerhead"]

Die Methode + slice + gibt auch ein neues Array zurück, wobei das ursprüngliche Array unverändert bleibt. Wenn Sie jedoch die Methode "+ slice! +" Verwenden, wird auch das ursprüngliche Array geändert.

Mit der Methode + take + können Sie die angegebene Anzahl von Einträgen ab dem Beginn eines Arrays erfassen:

sharks = ["Tiger", "Great White", "Hammerhead", "Angel"]
sharks.take(2)  # ["Tiger", "Great White"]

Manchmal möchten Sie einen zufälligen Wert aus einem Array anstelle eines bestimmten abrufen. Lassen Sie uns untersuchen, wie.

Zufälligen Eintrag aus einem Array abrufen

Möglicherweise arbeiten Sie an einem Glücksspiel, oder Sie schreiben ein Programm, in dem ein Gewinner des Wettbewerbs ermittelt wird. Solche Dinge erfordern einen zufälligen Wert. Eine gebräuchliche Lösung besteht darin, die möglichen Auswahlen in ein Array einzufügen und einen zufälligen Index auszuwählen.

Um ein zufälliges Element aus einem Array zu erhalten, können Sie einen zufälligen Index zwischen "+ 0 " und dem letzten Index des Arrays erstellen und diesen als Index zum Abrufen des Werts verwenden. Es gibt jedoch einen einfacheren Weg: das " sample +" Methode holt einen zufälligen Eintrag aus einem Array.

Verwenden wir es, um eine zufällige Antwort aus einer Reihe von Standardantworten zu erhalten und eine primitive Version eines Magic 8-Ball-Spiels zu erstellen:

8ball.rb

answers = ["Yes", "No", "Maybe", "Ask again later"]
print answers.sample
OutputMaybe

Die Methode "+ sample +" akzeptiert auch ein Argument, das ein Array von zufälligen Einträgen zurückgibt. Wenn Sie also mehr als einen zufälligen Eintrag benötigen, geben Sie einfach die gewünschte Zahl ein:

random_sharks.rb

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
sample = sharks.sample(2)
print sample
Output["Whale", "Great White"]

Schauen wir uns als Nächstes an, wie Sie bestimmte Elemente in einem Array finden.

Elemente suchen und filtern

Wenn Sie nach bestimmten Elementen in einem Array suchen, durchlaufen Sie die Elemente in der Regel, bis Sie das Gesuchte gefunden haben. Ruby-Arrays bieten jedoch mehrere Methoden, die speziell entwickelt wurden, um das Durchsuchen von Arrays zu vereinfachen.

Wenn Sie nur sehen möchten, ob ein Element vorhanden ist, können Sie die Methode "+ include? " Verwenden, die " true +" zurückgibt, wenn die angegebenen Daten ein Element des Arrays sind:

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
sharks.include? "Tiger"      # true

["a", "b", "c"].include? 2   # false

"+ Include? +" Erfordert jedoch eine genaue Übereinstimmung, sodass Sie nicht nach einem Teilwort suchen können.

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
sharks.include? "Tiger"      # true
sharks.include? "tiger"      # false
sharks.include? "ti"         # false

Die Methode + find + sucht das erste Element im Array und gibt es zurück, das einer von Ihnen angegebenen Bedingung entspricht.

Um zum Beispiel den ersten Eintrag im Array + sharks + zu identifizieren, der den Buchstaben + a + enthält, können Sie die Methode + each + verwenden, um jeden Eintrag zu vergleichen und die Iteration zu beenden, wenn Sie den ersten finden, wie folgt:

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
result = nil
sharks.each do |shark|
 if sharks.include? "a"
   result = shark
   break
 end
end

Oder Sie können die Methode + find + verwenden, um dasselbe zu tun:

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
result = sharks.find {|item| item.include?("a")}
print result
OutputHammerhead

+ find + führt den Block aus, den Sie für jedes Element im Array angeben. Wenn der letzte Ausdruck im Block "+ true " ergibt, gibt die Methode " find " den Wert zurück und beendet die Iteration. Wenn nach dem Durchlaufen aller Elemente nichts gefunden wird, wird " nil +" zurückgegeben.

Die Methode + select + funktioniert auf ähnliche Weise, erstellt jedoch ein neues Array mit allen Elementen, die der Bedingung entsprechen, anstatt nur einen einzelnen Wert zurückzugeben und anzuhalten.

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
results = sharks.select {|item| item.include?("a")}
print results
Output["Hammerhead", "Great White", "Whale"]

Die Methode "+ reject " gibt ein neues Array zurück, das Elemente enthält, die der Bedingung nicht entsprechen. Sie können sich das als einen Filter vorstellen, der Elemente entfernt, die Sie nicht möchten. Das folgende Beispiel lehnt alle Einträge ab, die den Buchstaben " a +" enthalten:

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
results = sharks.reject {|item| item.include?("a")}
print results
Output["Tiger"]

+ select + und + reject + geben beide ein neues Array zurück, wobei das ursprüngliche Array unverändert bleibt. Wenn Sie jedoch die Methoden "+ select! " Und " reject! +" Verwenden, wird das ursprüngliche Array geändert.

Die Methode "+ find_all " ist ein Alias ​​für " select ", aber es gibt keine " find_all! +" - Methode.

Als nächstes schauen wir uns an, wie die Werte eines Arrays sortiert werden.

Ein Array sortieren

Das Sortieren von Daten ist eine gängige Praxis. Möglicherweise müssen Sie eine Liste mit Namen alphabetisch sortieren oder die Nummern vom kleinsten zum größten sortieren.

Ruby-Arrays haben eine "+ reverse " - Methode, die die Reihenfolge der Elemente in einem Array umkehren kann. Wenn Sie eine Liste von Daten haben, die bereits organisiert sind, können Sie mit " umkehren +" die Elemente schnell umdrehen:

sharks = ["Angel", "Great White", "Hammerhead", "Tiger"]
reversed_sharks = sharks.reverse
print reversed_sharks
Output["Tiger", "Hammerhead", "Great White", "Angel"]

Die Methode "+ reverse " gibt ein neues Array zurück und ändert das Original nicht. Verwenden Sie die Methode " reverse! +", Wenn Sie stattdessen das ursprüngliche Array ändern möchten.

Das Umkehren eines Arrays ist jedoch nicht immer die effizienteste oder praktischste Methode zum Sortieren von Daten. Verwenden Sie die Methode "+ sort +", um die Elemente in einem Array nach Ihren Wünschen zu sortieren.

Bei einfachen Anordnungen von Zeichenfolgen oder Zahlen ist die Methode "+ sort +" effizient und liefert die gewünschten Ergebnisse:

sharks = ["Tiger", "Great White", "Hammerhead", "Angel"]
sorted_sharks = sharks.sort
print sorted_sharks
Output["Angel", "Great White", "Hammerhead", "Tiger"]

Wenn Sie die Dinge jedoch anders sortieren möchten, sollten Sie der Methode "+ sort " mitteilen, wie dies geschehen soll. Die Methode ` sort +` verwendet einen Ruby-Block, mit dem Sie auf Elemente im Array zugreifen können, um sie zu vergleichen.

Um den Vergleich durchzuführen, verwenden Sie den Vergleichsoperator ("+ <⇒ "), der häufig als "Raumschiffoperator" bezeichnet wird. Dieser Operator vergleicht zwei Ruby-Objekte und gibt " -1 " zurück, wenn das linke Objekt kleiner ist, " 0 ", wenn die Objekte gleich sind, und " 1 +", wenn das linke Objekt größer ist.

1 <=> 2    # -1
2 <=> 2    #  0
2 <=> 1    #  1

Rubys "+ sort " -Methode akzeptiert einen Block, der " -1 ", " 0 " oder " 1 +" zurückgeben muss und der dann zum Sortieren der Werte im Array verwendet wird.

Im folgenden Beispiel werden die Einträge im Array explizit verglichen, um sie in aufsteigender Reihenfolge zu sortieren:

sharks = ["Tiger", "Great White", "Hammerhead", "Angel"]
sorted_sharks = sharks.sort{|a,b| a <=> b }
print sorted_sharks

Die Variablen "+ a " und " b +" stellen einzelne Elemente im Array dar, die verglichen werden. Das Ergebnis sieht so aus:

Output["Angel", "Great White", "Hammerhead", "Tiger"]

Um die Haie in umgekehrter Reihenfolge zu sortieren, kehren Sie die Objekte im Vergleich um:

sharks = ["Tiger", "Great White", "Hammerhead", "Angel"]
sorted_sharks = sharks.sort{|a,b| b <=> a }
print sorted_sharks
Output["Tiger", "Hammerhead", "Great White", "Angel"]

Die Methode + sort + eignet sich hervorragend für Arrays mit einfachen Datentypen wie Ganzzahlen, Gleitkommazahlen und Zeichenfolgen. Wenn Arrays jedoch komplexere Objekte enthalten, müssen Sie etwas mehr Arbeit leisten.

Hier ist eine Reihe von Hashes, wobei jeder Hash einen Hai darstellt:

sharks = [
 {name: "Hammerhead"},
 {name: "Great white"},
 {name: "Angel"}
]

Das Sortieren mit "+ sort " ist nicht so einfach. Das Aufrufen von ` sort +` im Array schlägt fehl:

sharks.sort
OutputArgumentError: comparison of Hash with Hash failed

Um den Vergleich durchzuführen, müssen wir sagen, was wir vergleichen wollen. Daher vergleichen wir die Werte des "+: name +" - Schlüssels im Hash:

sorted_sharks.sort{|a, b| a[:name] <=> b[:name]}
print sorted_sharks
Output[{:name=>"Angel"}, {:name=>"Great white"}, {:name=>"Hammerhead"}]

Wenn Sie mit komplexeren Strukturen arbeiten, sollten Sie sich stattdessen die Methode "+ sort_by " ansehen, die einen effizienteren Algorithmus zum Sortieren verwendet. ` sort_by +` benötigt einen Block, der nur ein Argument benötigt, den Verweis auf das aktuelle Element im Array:

sharks = [
 {name: "Hammerhead"},
 {name: "Great white"},
 {name: "Angel"}
]

sorted_sharks = sharks.sort_by{|shark| shark[:name] }
print sorted_sharks
Output[{:name=>"Angel"}, {:name=>"Great white"}, {:name=>"Hammerhead"}]

Die Methode + sort_by + implementiert eine Schwartzian transform, einen Sortieralgorithmus, der am besten zum Vergleichen von Objekten basierend auf dem Wert eines bestimmten Schlüssels geeignet ist. Daher verwenden Sie "+ sort_by +", wenn Sie Sammlungen von Objekten vergleichen, da dies effizienter ist.

Sowohl + sort + als auch + sort_by + geben neue Arrays zurück, wobei das ursprüngliche Array intakt bleibt. Wenn Sie das ursprüngliche Array ändern möchten, verwenden Sie stattdessen "+ sort! " Und " sort_by! +".

Zusätzlich zum Sortieren von Werten möchten Sie möglicherweise auch Duplikate entfernen.

Doppelte Elemente entfernen

Manchmal erhalten Sie Listen mit Daten, die doppelt vorhanden sind. Sie könnten das Array durchlaufen und die Duplikate herausfiltern, aber Rubys "+ uniq " -Methode macht das viel einfacher. Die Methode " uniq +" gibt ein neues Array zurück, bei dem alle doppelten Werte entfernt wurden.

[1,2,3,4,1,5,3].uniq   # [1,2,3,4,5]

Wenn Sie zwei Datensätze zusammenführen, werden manchmal Duplikate erstellt. Nehmen Sie diese beiden Hai-Arrays:

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

Wenn wir sie addieren, erhalten wir einen doppelten Eintrag:

sharks + new_sharks
# ["Tiger", "Great White", "Tiger", "Hammerhead"]

Sie können "+ uniq " verwenden, um die Duplikate zu entfernen. Es ist jedoch besser, sie nicht vollständig einzufügen. Anstatt die Arrays zusammenzufügen, verwenden Sie den Pipe-Operator " | +", der die Arrays zusammenfügt:

sharks | new_sharks
# ["Tiger", "Great White", "Hammerhead"]

Ruby-Arrays unterstützen auch die Subtraktion, was bedeutet, dass Sie + new_sharks + von + sharks + subtrahieren können, um nur die neuen Werte zu erhalten:

sharks = ["Tiger", "Great White"]
new_sharks = ["Tiger", "Hammerhead"]
sharks - new_sharks   # ["Great White"]

Schauen wir uns als Nächstes an, wie Sie den Wert jedes Elements ändern.

Daten transformieren

Die Methode "+ map " und ihr Alias ​​" collect +" können den Inhalt eines Arrays transformieren, was bedeutet, dass sie eine Operation für jedes Element im Array ausführen können.

Beispielsweise können Sie mit + map + für jeden Eintrag in einem Array eine Arithmetik ausführen und ein neues Array mit den folgenden neuen Werten erstellen:

numbers = [2,4,6,8]

# square each number
squared_numbers = numbers.map {|number| number * number}

print squared_numbers

Die Variable + squared_numbers + ist ein Array der ursprünglichen Zahlen im Quadrat:

[4, 16, 36, 64]

+ map + wird häufig in Webanwendungen verwendet, um ein Array in Elemente für eine HTML-Dropdown-Liste umzuwandeln. Hier ist eine sehr vereinfachte Version, wie das aussehen könnte:

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

options = sharks.map {|shark| "<option>#{shark}</option>"}

print options

Das Array + options + hat jetzt jeden Hai in das HTML-Tag + <option> </ option> + gewickelt:

["<option>Hammerhead</option>", "<option>Great White</option>", "<option>Tiger</option>", "<option>Whale</option>"]

+ map + gibt ein neues Array zurück, wobei das ursprüngliche Array unverändert bleibt. Die Verwendung von + map! + Würde das vorhandene Array ändern. Und denken Sie daran, dass "+ map " einen Alias ​​" collect +" hat. Sie sollten konsistent sein und das eine oder andere in Ihrem Code verwenden.

Da + map + ein neues Array zurückgibt, kann das Array weiter transformiert und bearbeitet oder sogar in einen String konvertiert werden. Schauen wir uns das als nächstes an.

Konvertieren eines Arrays in einen String

Alle Objekte in Ruby haben eine "+ to_s " - Methode, die das Objekt in einen String konvertiert. Dies ist, was die Anweisung " print " verwendet. In Anbetracht unserer Auswahl an " Haien +":

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

Durch Aufrufen der Methode + to_s + wird folgende Zeichenfolge erstellt:

"[\"Hammerhead\", \"Great White\", \"Tiger\", \"Whale\"]"

Das ist großartig für das Debuggen, aber in einem echten Programm nicht sehr nützlich.

Die + join + Methode konvertiert ein Array in einen String, gibt Ihnen aber viel mehr Kontrolle darüber, wie Sie die Elemente kombinieren möchten. Die Methode + join + akzeptiert ein Argument, das das Zeichen angibt, das Sie als Trennzeichen verwenden möchten. Um das Hai-Array in eine durch Leerzeichen getrennte Folge von Hai-Namen umzuwandeln, gehen Sie folgendermaßen vor:

shark_join.rb

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
result = sharks.join(" ")
print result
OutputHammerhead Great White Tiger Whale

Wenn Sie möchten, dass jeder Haifischname durch ein Komma und ein Leerzeichen getrennt wird, verwenden Sie ein Komma und ein Leerzeichen als Trennzeichen:

shark_join.rb

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
result = sharks.join(", ")
print result
OutputHammerhead, Great White, Tiger, Whale

Wenn Sie kein Argument für die Methode "+ join +" angeben, wird weiterhin eine Zeichenfolge angezeigt, die jedoch keine Trennzeichen enthält:

shark_join.rb

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
result = sharks.join
print result
OutputHammerheadGreat WhiteTigerWhale

Die Verwendung von "+ join " in Verbindung mit " map " ist eine schnelle Möglichkeit, ein Array von Daten in eine Ausgabe umzuwandeln. Verwenden Sie " map ", um jedes Element in den Daten zu transformieren, und " join ", um das Ganze in eine Zeichenfolge zu transformieren, die Sie ausdrucken können. Erinnern Sie sich an unser Beispiel, wie wir unser Array ` sharks ` in ein Array von HTML-Elementen verwandelt haben? Hier noch einmal dasselbe Beispiel, aber dieses Mal verwenden wir " join +", um das Array von Elementen in einen String mit Zeilenumbruchzeichen als Trennzeichen zu konvertieren:

map.rb

sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
options = sharks.map {|shark| "<option>#{shark}</option>"}
output = options.join("\n")
print output
Output<option>Hammerhead</option>
<option>Great White</option>
<option>Tiger</option>
<option>Whale</option>

Anstatt ein Array in eine Zeichenfolge zu konvertieren, möchten Sie möglicherweise den gesamten Inhalt abrufen oder eine andere Art der Transformation ausführen, die zu einem einzelnen Wert führt. Das geht als nächstes.

Arrays auf einen einzigen Wert reduzieren

Wenn Sie mit einer Datenmenge arbeiten, müssen Sie die Daten möglicherweise zu einem einzigen Wert zusammenfassen, z. B. einer Summe. Eine Möglichkeit, dies zu tun, besteht darin, eine Variable und die Methode "+ each +" zu verwenden:

result = 0
[1, 2, 3].each {|num| result += num}
print result
Output6

Sie können stattdessen die Methode "+ Verkleinern " verwenden. Die Methode ` reduce +` iteriert über ein Array und behält eine laufende Summe bei, indem für jedes Element eine Binäroperation ausgeführt wird.

Die Methode + reduce + akzeptiert einen Anfangswert für das Ergebnis sowie einen Block mit zwei lokalen Werten: eine Referenz auf das Ergebnis und eine Referenz auf das aktuelle Element. Innerhalb des Blocks geben Sie die Logik für die Berechnung des Endergebnisses an.

Da wir das Array zusammenfassen möchten, initialisieren wir das Ergebnis mit "+ 0 +" und fügen dann den aktuellen Wert zum Ergebnis im Block hinzu:

output = [1,2,3].reduce(0) {|result, current| result += current }
print output
Output6

Wenn Sie das Ergebnis auf "+ 0 +" initialisieren möchten, können Sie das Argument weglassen und einfach den Block übergeben. Dadurch wird das Ergebnis automatisch auf den ersten Wert im Array gesetzt:

output = [1,2,3].reduce {|result, current| result += current }
print output
Output6

Mit der Methode + reduce + können Sie auch eine binary-Methode oder eine Methode für ein Objekt angeben, die ein anderes Objekt als Argument akzeptiert und die für jeden Eintrag im Array ausgeführt wird. + Verkleinern + verwendet dann die Ergebnisse, um einen einzelnen Wert zu erstellen.

Wenn Sie in Ruby "2 + 2 +" schreiben, rufen Sie tatsächlich die "+" - Methode für die Ganzzahl " 2 +" auf:

2.+(2)   # 4

Ruby verwendet etwas synthetischen Zucker, so dass Sie ihn als "+2 + 2 +" ausdrücken können.

Mit der Methode "+ verkleinern " können Sie eine binäre Methode angeben, indem Sie ihren Namen als Symbol übergeben. Das bedeutet, dass Sie ": +" an die " reduct +" - Methode übergeben können, um das Array zu summieren:

output = [1, 2, 3].reduce(:+)
print output
Output6

Sie können + verkleinern + verwenden, um mehr als nur Zahlenlisten zu addieren. Sie können damit Werte transformieren. Denken Sie daran, dass + redu + ein Array auf einen einzelnen Wert reduziert. Es gibt jedoch keine Regel, die besagt, dass ein einzelner Wert kein anderes Array sein kann.

Nehmen wir an, wir haben eine Liste von Werten, die wir in ganze Zahlen konvertieren müssen. Wir wollen aber nur die Werte, die in ganze Zahlen konvertiert werden können.

Wir könnten "+ rejects" verwenden, um die nicht numerischen Werte auszuschließen, und dann "+ map" verwenden, um die verbleibenden Werte in ganze Zahlen umzuwandeln. Aber wir können alles in einem Schritt mit + redu + machen. Hier ist wie.

Verwenden Sie ein leeres Array als Initialisierungswert. Konvertieren Sie dann im Block den aktuellen Wert mit der Methode "+ Integer " in eine Ganzzahl. Wenn der Wert nicht in eine Ganzzahl konvertiert werden kann, löst " Ganzzahl " eine Ausnahme aus, die Sie abfangen und dem Wert " nil +" zuweisen können.

Nehmen Sie den Wert und fügen Sie ihn in das Array ein, aber nur, wenn er nicht "+ nil +" ist.

So sieht der Code aus. Probieren Sie dies aus:

convert_array_of_values.rb

values = ["1", "2", "a", "3"]
integers = values.reduce([]) do |array, current|
 val = Integer(current) rescue nil
 array.push(val) unless val.nil?
 array
end
print integers
Output[1,2,3]

Wenn Sie eine Liste von Elementen haben, die Sie in einen einzelnen Wert konvertieren müssen, können Sie diese möglicherweise mit + redu + lösen.

Fazit

In diesem Lernprogramm haben Sie verschiedene Methoden zum Arbeiten mit Arrays verwendet. Sie haben einzelne Elemente erfasst, Werte durch Durchsuchen des Arrays abgerufen, Elemente sortiert und die Daten transformiert und neue Arrays, Zeichenfolgen und Summen erstellt. Sie können diese Konzepte anwenden, um viele häufig auftretende Programmierprobleme mit Ruby zu lösen.

Schauen Sie sich unbedingt diese zugehörigen Tutorials an, um weitere Informationen zum Umgang mit Daten in Ruby zu erhalten: