Erreurs de syntaxe et contre-mesures Ruby

Comme meilleur exemple de mémorandum, j'écrirai les erreurs rencontrées et les solutions.

① La syntaxe est incorrecte? [erreur de syntaxe, tIDENTIFIER inattendu]

erreur de syntaxe = Puisqu'il s'agit d'une erreur de syntaxe, je me fâche si quelque chose ne va pas avec le code que j'ai écrit. Le code ci-dessous est le résultat de la sortie du fichier dans le 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(Mauvais code)


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

main2.rb (code modifié)


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

La cause était que chaque élément de la super méthode n'était pas séparé par "," et tous étaient traités comme la même ligne, donc j'étais en colère.

** Notez que la super méthode appelle la méthode que la méthode d'exécution remplace. Le remplacement consiste à "remplacer la méthode de la classe parente par la classe enfant". En utilisant super dans la méthode initialize, il est possible d'exécuter la méthode initialize de la classe spécifiée. En conséquence, le traitement peut être divisé en "parties communes" et "parties non communes". ** **

② Je ne connais pas un tel nom! constante non initialisée (NameError)

main.rb


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

Je suis fâché qu'il n'y ait pas de nom de classe dans le fichier main.rb. Si vous obtenez une erreur que vous souhaitez appeler un fichier séparé Décrivons require comme indiqué ci-dessous afin qu'un autre fichier puisse être appelé.

require './<nom du cours>'

③ Passez la valeur requise! ArgumentError

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

Se produit en cas d'erreur d'argument. Je passe une valeur requise comme (donné 1, attendu 0), mais je suis en colère qu'il n'y ait pas de destinataire. Puisqu'il y a une forte possibilité que vous ayez oublié de décrire l'argument en premier lieu, vérifions la méthode décrite.

④ Définissons la méthode! NoMethodError

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

Littéralement une erreur due à une méthode non définie.

Cela peut être simplement dû à la faute de frappe, mais il est également possible qu'une méthode ait oublié de fermer def ~ end. Faisons également attention à la position du retrait.

** Les éléments suivants seront ajoutés lorsqu'une erreur est rencontrée et résolue. ** **

Recommended Posts

Erreurs de syntaxe et contre-mesures Ruby
Résumé de la syntaxe Ruby
Rubis et gemme
[Ruby] Classes et instances
Symboles et rubis destructeur
[Ruby] Big Decimal et DECIMAL
Classes et instances Ruby
Héritage et délégation Ruby
À propos des hachages et symboles Ruby
Extension Ruby C et volatile
Résumer l'injection de rubis et de dépendances
À propos de Ruby, modèle objet
[Ruby] Méthodes singulières et classes singulières
À propos des classes et des instances Ruby
Méthodes et classes Ruby (basiques)
Création de classes et d'instances Ruby
[Ruby] Différence entre obtenir et publier
[Ruby] Différence entre is_a? Et instance_of?
Entrée standard Ruby et diverses méthodes
À propos des guillemets simples et doubles Ruby
[Bases de Ruby] méthode split et méthode to_s
À propos de l'opérateur de produit Ruby (&) et de l'opérateur somme (|)
Ecrire des clés et des valeurs dans Ruby
Mise à niveau de la version du projet Ruby and Rails
À propos de l'héritage orienté objet et du rendement Ruby