“错误的参数数量(1为0)”在Ruby中意味着什么?

时间:2011-09-24 06:34:52

标签: ruby

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

4 个答案:

答案 0 :(得分:92)

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

实施例: 没有争论:

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以了解所有这些。

答案 1 :(得分:11)

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

def takes_no_arguments
end

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

答案 2 :(得分:2)

我假设您调用了一个带有参数的函数,该函数是在没有任何参数的情况下定义的。

def f()
  puts "hello world"
end

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

答案 3 :(得分:0)

如果从使用带有一个参数的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)