2013-09-08 52 views
7

Đây là ứng dụng ruby ​​đầu tiên của tôi. Và tôi là một stack overflow trinh nữ ... Khi tôi chạy chương trình sau:Bắt `khởi tạo ': sai số đối số (1 cho 0) (ArgumentError) cho ứng dụng ruby ​​đơn giản

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 

tôi nhận được kết quả thông báo lỗi đơn giản này:

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

bạn có thể giúp tôi rắc rối shoot?

Trả lời

7

Vì bạn chưa xác định phương pháp initialize cho NameApp, theo mặc định, không có đối số, nhưng bạn đã vượt qua một đối số "Test1" thông qua hàm tạo new.

45

Bạn đánh vần là "khởi tạo" sai. Tôi đã làm điều đó một vài lần quá khi tôi đã bắt đầu, và đó là khó khăn để gỡ lỗi. Tại sao ruby ​​không gọi nó là "init", tôi sẽ không bao giờ biết.

+1

Bạn đã lưu ngày của tôi @ 7stud! – FloatingRock

+0

Rời, sau nhiều năm, để nói lời cảm ơn. – amaleemur

+0

bỏ qua, năm sau, sau lần đầu tiên tôi upvoted câu trả lời này, để nói lời cảm ơn lần nữa. – lakesare