Подтвердить что ты не робот

Что означает "неправильное количество аргументов (1 для 0)" в Ruby?

Что означает "Аргумент Ошибка: неправильное количество аргументов (1 для 0)" означает?

4b9b3361

Ответ 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)