Se `initialize': mauvais nombre d'arguments(1 0) (ArgumentError) pour une simple application ruby
C'est ma première application ruby. Et je suis un débordement de pile vierge... Quand je lance le programme suivant:
class NameApp
def intialize(name)
@names = []
end
def name_question
print "What is your name? "
answer = gets.chomp
@names += answer.to_s
puts "The number of characters in your name is " + names.length
end
def name_length
if @names.length > 25 then
print "Your name is longer than 25 characters."
else
print "Your name is too short."
end
end
end
name_app = NameApp.new("Test1")
name_app.class # => NameApp
name_app.name_question
name_app.name_length
J'obtiens ce message d'erreur simple résultat:
name.rb:26:in `initialize': wrong number of arguments(1 for 0) (ArgumentError)
from nameapp.rb:26:in `new'
from nameapp.rb:26:in `<main>'
Pouvez-vous m'aider à me dépanner?
OriginalL'auteur nilesvm | 2013-09-08
Vous devez vous connecter pour publier un commentaire.
Puisque vous n'avez pas défini la méthode
initialize
pourNameApp
, par défaut, il faut des arguments zéro, mais que vous avez passé un argument"Test1"
par le constructeurnew
.initialize
être mal orthographiés est plus utile.Pourquoi? Cette réponse est juste, fondée sur une supposition.
Il n'est pas basé sur une supposition. L'exemple de code montre clairement que
initialize
a été mal orthographié commeintialize
. Votre réponse est correcte, que la méthodeinitialize
n'a pas été défini; cependant souligner qu'il s'agit simplement d'une erreur d'orthographe est plus utile.OriginalL'auteur sawa
Vous orthographié "initialiser" mal. Je l'ai fait quelques fois aussi, quand j'ai commencé, et c'était difficile à déboguer. Pourquoi ruby n'a pas de nom "init", je ne le saurai jamais.
Une chute de, des années plus tard, pour vous dire merci.
une chute de, des années plus tard, après j'ai d'abord upvoted cette réponse, pour te dire encore merci.
Ce qu'est une formidable réponse!!
OriginalL'auteur 7stud
Pour
require_relative 'user'
déplacer les anciens 'de l'utilisateur.rb' jusqu'à un niveau de renommer 'user2.rb' à 'l'utilisateur.rb'. Aussi, il y a une faute de frappe.OriginalL'auteur samanthi22