“参数错误:参数数量错误(1表示0)”是什么意思?
答案 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)