2013-09-08 16 views
7

To jest moja pierwsza aplikacja ruby. I jestem dziewicą przepełnienie stosu ... Kiedy uruchomić następujący program:Uzyskiwanie `initialize ': zła liczba argumentów (1 za 0) (ArgumentError) dla prostej aplikacji z ruby ​​

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 

uzyskać to prosty wynik komunikat o błędzie:

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

możesz mi pomóc kłopoty strzelać?

Odpowiedz

7

Ponieważ nie zdefiniowano metodę initialize dla NameApp domyślnie trwa zerowe argumenty, ale zdałeś jeden argument "Test1" przez konstruktora new.

45

Napisałeś "initialize" wrong. Zrobiłem to kilka razy, kiedy zaczynałem, a to było trudne do debugowania. Dlaczego Ruby nie nazwał tego "init", nigdy się nie dowiem.

+1

Uratowałeś mój dzień @ 7stud! – FloatingRock

+0

Upuszczając, lata później, dziękuję. – amaleemur

+0

upuszczając, lata później po tym, jak po raz pierwszy przegłosowałem tę odpowiedź, dziękuję jeszcze raz. – lakesare