[RAILS] [Ruby] Von den Grundlagen bis zur Injektionsmethode

Injektionsmethode

Referenz: https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/inject.html

Was ist überhaupt Aufzählbar?

Modul. Ein Mix-In für sich wiederholende Klassen. Die folgenden sind berühmte Freunde (Instanzmethoden).

Referenz: https://docs.ruby-lang.org/ja/latest/class/Enumerable.html

In Ruby können Sie mit dem Modul "Aufzählbar" bequeme iterative Methoden verwenden.

Grundlegende Verwendung

ary = [1,2,3,4,5]
ary.inject(1){ |sum, n| sum + n }
# => 16

,,,Schwer zu verstehen.

Machen wir es uns leicht verständlich.

ary = [1,2,3,4,5]
ary.inject(1) do |sum, n| 
  puts sum
  sum + n 
end
 
=begin
=>1 (Anfangswert im Argument von inj angegeben"1"Gibt die Summe ein)
=>2 (Anfangswert (Summe)+Summe des ersten Elements (n) des Arrays)
=>4 (Der Rückgabewert (2) des vorherigen Prozesses ist in Summe+Zweite Elementsumme)
=>7 (unten weggelassen)
=>11
=>16 (Gesamtrückgabewert)
=end

Kannst du es dir irgendwie vorstellen? Dies ist ** Falten **.

Übrigens, wenn das Methodenargument (hoge Teil von injizieren (hoge)) weggelassen wird, wird das erste Element des Arrays auf den Anfangswert gesetzt.

ary = [1,2,3,4,5]
ary.inject do |sum, n| 
  puts sum
  sum + n 
end
 
=begin
=>1 
=>3 
=>6 
=>10 
=>15 (Gesamtrückgabewert)
=end

Was mich glücklich macht

Mit einem richtigen Verständnis können Sie komplexe Prozesse auf leicht verständliche Weise schreiben. Da die Verarbeitung innerhalb des Blocks durch Faltung wiederholt werden kann, kann sie kürzer als die "jeder" -Methode geschrieben werden.

Mit anderen Worten, es wird häufig für iteratives Refactoring verwendet.

Lassen Sie uns unten einen praktischen Code schreiben.

Tatsächliche Nutzung

Holen Sie sich die Summe der Sequenzen

Für jeden

sum = 0
ary = [100,200,300,42,52]
ary.each { |n| sum += n }
puts sum
# =>694

Im Falle einer Injektion

ary = [100,200,300,42,52]
sum = ary.inject { |s, n| s += n }
puts sum
# =>694

Eine Zeile hat abgenommen. Erfrischend.

Recommended Posts

[Ruby] Von den Grundlagen bis zur Injektionsmethode
[Ruby-Grundlagen] Verwendung der Slice-Methode
Verwendung der Ruby-Inject-Methode
Von Java zu Ruby !!
Iterative Verarbeitung von Ruby mit jeder Methode (finde die Summe von 1 bis 10)
Ruby-Algorithmus (Injizieren, Methodendefinition)
Verwendung der Methode form_with
[Ruby] Methode zum Zählen bestimmter Zeichen
[Ruby-Grundlagen] Split-Methode und to_s-Methode
Ich habe versucht, die Methode zu erklären
Einführung in Ruby (aus anderen Sprachen)
Der Weg von JavaScript nach Java
Ruby-Grundlagen
[Android, Java] Methode zum Ermitteln des abgelaufenen Datums aus zwei Daten
Der Unterschied zwischen der Ruby-Instanzmethode und der Klassenmethode ist leicht zu verstehen.
[Herausforderung CircleCI von 0] Lernen Sie die Grundlagen von CircleCI
Untersuchen Sie den Ersatz von Docker zu Podman.
[Schienen] Verwendung der Kartenmethode
[Java] Verwendung der toString () -Methode
Ich wollte der Methode @VisibleForTesting hinzufügen
Ich war süchtig nach der Rollmethode
Extrahieren Sie Zeichen aus der Ruby-String-Slice-Methode
So finden Sie die Ursache des Ruby-Fehlers
[Ruby] Zusammenfassung der Klassendefinitionen. Beherrsche die Grundlagen.
Ruby to_s Methode
Memorandum zum Bereinigen des Codes Ruby
[Heroku-Bereitstellungsverfahren ③] Von der Ruby-Versionsspezifikation zur Bereitstellung und zum Zugriff auf die Anwendung (abgeschlossen)
Migration von Eclipse zu IntelliJ (unterwegs)
Suchmethode
[Ruby] Verwendung der gsub-Methode und der sub-Methode
Die Geschichte der Einführung der Ajax-Kommunikation in Ruby
Ein junger Ingenieur lernte JUnit aus den Grundlagen
[Ruby] Ich möchte einen Methodensprung machen!
Grundlagen von Ruby
Wenn Sie die Methode außerhalb verwenden möchten
Ausgabe der Verwendung der Slice-Methode
Über die Methode
[Ruby] Code zur Anzeige des Tages
[Ruby-Grundlagen] Ich habe versucht, Module zu lernen (Kapitel 1)
Verwendung der replace () -Methode (Java Silver)
[Rubiy] Ich möchte mit der Split-Methode ein Array aus einer Zeichenfolge erstellen. Und umgekehrt.
Lesen Sie die offizielle Dagger2-Dokumentation, um die Grundlagen zu verstehen
[Ruby] Initialisierungsmethode
Ruby-Build-Methode