Que signifie «nombre d’arguments incorrect (1 pour 0)» dans Ruby?

Que signifie “Erreur d’argument: nombre d’arguments incorrect (1 pour 0)”?

Lorsque vous définissez une fonction, vous définissez également les informations (arguments) nécessaires à cette fonction. Si elle est conçue pour fonctionner sans informations supplémentaires et que vous la transmettez, vous obtiendrez cette erreur.

Exemple: Ne prend aucun argument:

def dog end 

Prend des arguments:

 def cat(name) end 

Lorsque vous les appelez, vous devez les appeler avec les arguments que vous avez définis.

 dog #works fine cat("Fluffy") #works fine dog("Fido") #Returns ArgumentError (1 for 0) cat #Returns ArgumentError (0 for 1) 

Consultez les Ruby Koans pour apprendre tout cela.

Vous avez passé un argument à une fonction qui n’en prenait pas. Par exemple:

 def takes_no_arguments end takes_no_arguments 1 # ArgumentError: wrong number of arguments (1 for 0) 

Je suppose que vous avez appelé une fonction avec un argument qui a été défini sans en prendre.

 def f() puts "hello world" end f(1) # <= wrong number of arguments (1 for 0) 

Si vous passez d’un lambda avec un argument à une fonction avec un seul argument, vous obtiendrez cette erreur.

Par exemple:

Tu avais:

 foobar = lambda do |baz| puts baz end 

et vous avez changé la définition en

 def foobar(baz) puts baz end 

Et vous avez quitté votre invocation en tant que:

 foobar.call(baz) 

Et puis vous avez le message

 ArgumentError: wrong number of arguments (0 for 1) 

quand tu voulais vraiment dire:

 foobar(baz)