Что означает "Аргумент Ошибка: неправильное количество аргументов (1 для 0)" означает?
Что означает "неправильное количество аргументов (1 для 0)" в Ruby?
Ответ 1
Когда вы определяете функцию, вы также определяете, какая информация (аргументы) должна работать. Если он предназначен для работы без дополнительной информации, и вы его передаете, вы получите эту ошибку.
Пример: Не принимает аргументов:
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, чтобы узнать все это.
Ответ 2
Вы передали аргумент функции, которая ее не принимала. Например:
def takes_no_arguments
end
takes_no_arguments 1
# ArgumentError: wrong number of arguments (1 for 0)
Ответ 3
Я предполагаю, что вы вызвали функцию с аргументом, который был определен без принятия каких-либо.
def f()
puts "hello world"
end
f(1) # <= wrong number of arguments (1 for 0)
Ответ 4
Если вы перейдете от использования лямбда с одним аргументом к функции с одним аргументом, вы получите эту ошибку.
Например:
У вас было:
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)