簡體   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