在Ruby中,“参数数目错误(1表示0)”是什么意思?

“参数错误:参数数目错误(1代表0)”是什么意思?

Kotaro Ezawa asked 2019-10-09T14:03:24Z
4个解决方案
92 votes

定义功能时,您还定义了该功能需要工作的信息(参数)。 如果它设计为在没有任何其他信息的情况下工作,并且您将其传递了一些信息,那么您将得到该错误。

例:不带任何参数:

def dog
end

接受参数:

def cat(name)
end

调用它们时,需要使用定义的参数来调用它们。

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


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

查看Ruby Koans了解所有这些。

bennett_an answered 2019-10-09T14:04:20Z
11 votes

您将一个参数传递给了一个不带任何参数的函数。 例如:

def takes_no_arguments
end

takes_no_arguments 1
# ArgumentError: wrong number of arguments (1 for 0)
icktoofay answered 2019-10-09T14:04:46Z
2 votes

我假设您使用一个不带任何参数定义的参数调用了一个函数。

def f()
  puts "hello world"
end

f(1)   # <= wrong number of arguments (1 for 0)
Howard answered 2019-10-09T14:05:11Z
0 votes

如果您从使用带有一个参数的lambda更改为带有一个参数的函数,则会出现此错误。

例如:

你有过:

foobar = lambda do |baz|
  puts baz
end

然后您将定义更改为

def foobar(baz)
  puts baz
end

您将调用保留为:

foobar.call(baz)

然后你得到消息

ArgumentError: wrong number of arguments (0 for 1)

当你真正的意思是:

foobar(baz)
justingordon answered 2019-10-09T14:06:16Z
translate from https://stackoverflow.com:/questions/7537450/what-does-wrong-number-of-arguments-1-for-0-mean-in-ruby