2013-09-08 8 views
7

Dies ist meine erste Ruby-App. Und ich bin einen Stapelüberlauf Jungfrau ... Wenn ich das folgende Programm ausführen:Erste `Initialisierung ': falsche Anzahl von Argumenten (1 für 0) (ArgumentError) für einfache Ruby-App

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 

ich diese einfache Fehlermeldung Ergebnis:

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>' 

Können Sie mir helfen, Ärger zu schießen?

Antwort

7

Da Sie nicht die Methode definiert haben initialize für NameApp, standardmäßig sind es null Argumente, aber Sie übergeben ein Argument "Test1" über den Konstruktor new.

45

Sie buchstabiert "initialisieren" falsch. Ich habe das auch ein paar Mal gemacht, als ich anfing, und das war schwer zu debuggen. Warum Ruby es nicht "init" nannte, werde ich nie wissen.

+1

Sie haben meinen Tag @ 7stud gespeichert! – FloatingRock

+0

vorbei, Jahre später, um Danke zu sagen. – amaleemur

+0

vorbei, Jahre später nachdem ich zuerst diese Antwort upvoted, um wieder zu danken. – lakesare

Verwandte Themen