【发布时间】:2020-09-16 22:31:30
【问题描述】:
“Argument Error: wrong number of arguments (1 for 0)”是什么意思?
【问题讨论】:
标签: ruby
“Argument Error: wrong number of arguments (1 for 0)”是什么意思?
【问题讨论】:
标签: ruby
定义函数时,还定义了该函数需要哪些信息(参数)才能工作。如果它被设计为在没有任何额外信息的情况下工作,并且你传递了一些信息,你就会得到那个错误。
示例: 不接受任何参数:
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 了解这一切。
【讨论】:
Cat.new("Fluffy") 不能正常工作。它给出“未初始化的常量 Cat”,Cat().new("Fluffy") 给出“ArgumentError: wrong number of arguments (0 for 1)”。
您将一个参数传递给了一个不带任何参数的函数。例如:
def takes_no_arguments
end
takes_no_arguments 1
# ArgumentError: wrong number of arguments (1 for 0)
【讨论】:
我假设你调用了一个带有参数的函数,该参数是在没有任何参数的情况下定义的。
def f()
puts "hello world"
end
f(1) # <= wrong number of arguments (1 for 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)
【讨论】: