it-swarm.com.de

Was bedeutet "falsche Anzahl von Argumenten (1 für 0)" in Ruby?

Was bedeutet "Argumentfehler: falsche Anzahl von Argumenten (1 für 0)"?

58
Kotaro Ezawa

Wenn Sie eine Funktion definieren, definieren Sie auch, welche Info (Argumente) diese Funktion funktionieren muss. Wenn es so konzipiert ist, dass es ohne zusätzliche Informationen funktioniert und Sie es weitergeben, werden Sie diesen Fehler erhalten.

Beispiel: Nimmt keine Argumente an:

def dog
end

Nimmt Argumente an:

def cat(name)
end

Wenn Sie diese aufrufen, müssen Sie sie mit den von Ihnen definierten Argumenten aufrufen.

dog                  #works fine
cat("Fluffy")        #works fine


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

Schauen Sie sich die Ruby Koans an, um all dies zu erfahren.

92
bennett_an

Sie haben ein Argument an eine Funktion übergeben, für die es keine gab. Zum Beispiel:

def takes_no_arguments
end

takes_no_arguments 1
# ArgumentError: wrong number of arguments (1 for 0)
11
icktoofay

Ich nehme an, Sie haben eine Funktion mit einem Argument aufgerufen, das definiert wurde, ohne eine zu nehmen.

def f()
  puts "hello world"
end

f(1)   # <= wrong number of arguments (1 for 0)
2
Howard

Wenn Sie von einem Lambda mit einem Argument zu einer Funktion mit einem Argument wechseln, wird dieser Fehler angezeigt.

Zum Beispiel:

Sie hatten:

foobar = lambda do |baz|
  puts baz
end

und Sie haben die Definition in geändert 

def foobar(baz)
  puts baz
end

Und Sie haben Ihre Anrufung hinterlassen als:

foobar.call(baz)

Und dann hast du die Nachricht bekommen

ArgumentError: wrong number of arguments (0 for 1)

wenn du wirklich gemeint hast:

foobar(baz)
0
justingordon