Ruby-Syntaxfehler und Gegenmaßnahmen

Als Paradebeispiel für ein Memorandum werde ich die aufgetretenen Fehler und die Lösungen aufschreiben.

① Die Syntax ist falsch? [Syntaxfehler, unerwarteter TIDENTIFIER]

Syntaxfehler = Da es sich um einen Syntaxfehler handelt, werde ich wütend, wenn etwas mit dem von mir geschriebenen Code nicht stimmt. Der folgende Code ist das Ergebnis der Ausgabe der Datei im Terminal.

main2.rb:81: syntax error, unexpected tIDENTIFIER, expecting ')'
      hp: params[:hp]
main2.rb:82: syntax error, unexpected ':', expecting end
      offense: params[:offense]
main2.rb:83: syntax error, unexpected ':', expecting end
      defense: params[:defense]
main2.rb:84: syntax error, unexpected ')', expecting end
    )

main2.rb(Falscher Code)


super(
      name: params[:name]
      hp: params[:hp]
      offense: params[:offense]
      defense: params[:defense]
    )

main2.rb (geänderter Code)


super(
      name: params[:name],
      hp: params[:hp],
      offense: params[:offense],
      defense: params[:defense]
    )

Die Ursache war, dass jedes Element in der Supermethode nicht durch "," getrennt war und alle als dieselbe Zeile behandelt wurden, also war ich wütend.

** Beachten Sie, dass die Super-Methode die Methode aufruft, die die ausführende Methode überschreibt. Überschreiben bedeutet "Überschreiben der Methode der übergeordneten Klasse mit der untergeordneten Klasse". Durch die Verwendung von super in der Initialisierungsmethode ist es möglich, die Initialisierungsmethode der angegebenen Klasse auszuführen. Infolgedessen kann die Verarbeitung in "gemeinsame Teile" und "nicht gemeinsame Teile" unterteilt werden. ** ** **

② Ich kenne einen solchen Namen nicht! nicht initialisierte Konstante (NameError)

main.rb


Traceback (most recent call last):
main.rb:1:in `<main>': uninitialized constant <Klassenname> (NameError)

Ich bin wütend, dass die Datei main.rb keinen solchen Klassennamen enthält. Wenn Sie eine Fehlermeldung erhalten, möchten Sie eine separate Datei aufrufen Beschreiben wir require wie unten gezeigt, damit eine andere Datei aufgerufen werden kann.

require './<Klassenname>'

③ Übergeben Sie den gewünschten Wert! ArgumentError

wrong number of arguments (given 1, expected 0) (ArgumentError)

Tritt im Falle eines Argumentfehlers auf. Ich übergebe einen erforderlichen Wert als (gegeben 1, erwartete 0), aber ich bin wütend, dass es keinen Empfänger gibt. Da es sehr wahrscheinlich ist, dass Sie vergessen haben, das Argument überhaupt zu beschreiben, überprüfen wir die beschriebene Methode.

④ Definieren wir die Methode! NoMethodError

monster.rb:51:in `transform': undefined method `transform_message' for #<Monster:0x00007fea761c2b28> (NoMethodError)

Buchstäblich ein Fehler aufgrund einer undefinierten Methode.

Es mag einfach am Typ liegen, aber es ist auch möglich, dass eine Methode vergessen hat, def ~ end zu schließen. Achten wir auch auf die Position des Einzugs.

** Folgendes wird hinzugefügt, wenn ein Fehler auftritt und behoben wird. ** ** **

Recommended Posts

Ruby-Syntaxfehler und Gegenmaßnahmen
Zusammenfassung der Ruby-Syntax
Rubin und Edelstein
[Ruby] Klassen und Instanzen
Symbole und zerstörerischer Rubin
[Ruby] Big Decimal und DECIMAL
Ruby-Klassen und -Instanzen
Ruby-Vererbung und -Delegierung
Über Ruby-Hashes und -Symbole
Ruby C Erweiterung und flüchtig
Fassen Sie Ruby und Dependency Injection zusammen
Über Ruby und Objektmodell
[Ruby] Singuläre Methoden und singuläre Klassen
Informationen zu Ruby-Klassen und -Instanzen
Ruby-Methoden und -Klassen (grundlegend)
Erstellen von Ruby-Klassen und -Instanzen
[Ruby] Unterschied zwischen get und post
[Ruby] Unterschied zwischen is_a? Und instance_of?
Ruby-Standardeingabe und verschiedene Methoden
Über Ruby einfache Anführungszeichen und doppelte Anführungszeichen
[Ruby-Grundlagen] Split-Methode und to_s-Methode
Informationen zum Ruby-Produktoperator (&) und zum Summenoperator (|)
Schreiben Sie Schlüssel und Werte in Ruby
Upgrade der Ruby- und Rails-Version des Projekts
Über objektorientierte Vererbung und über Ertrag Ruby