繁体   English   中英

Ruby 中的“错误数量的参数(1 代表 0)”是什么意思?

[英]What does “wrong number of arguments (1 for 0)” mean in Ruby?

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

当您定义一个函数时,您还定义了该函数需要工作的信息(参数)。 如果它的设计目的是在没有任何附加信息的情况下工作,并且您传递了一些信息,那么您将收到该错误。

示例: 不带参数:

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

你将一个参数传递给一个没有接受任何参数的函数。 例如:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM