2013-09-08 7 views
7

これは私の最初のRubyアプリケーションです。`initialize 'の取得:単純なルビアプリケーションの引数の数が1つ(ArgumentError)

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 

私はこの単純なエラーメッセージの結果を得る:

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

は、あなたは私の悩みのシュートを助けることができますか?そして私は、私は、次のプログラムを実行すると...スタックオーバーフロー処女ですか

答えて

7

あなたがNameApp方法initializeを定義していないので、デフォルトでは、それがゼロの引数を取るが、あなたは、コンストラクタnewを経由して1つの引数"Test1"を可決しました。

45

「初期化」の綴りが間違っています。私が始めていたときに私はそれを数回もしました、そして、それはデバッグするのが難しかったです。なぜルビーはそれを「init」と名付けなかったのですか、私は決して知らないでしょう。

+1

あなたは私の日@ 7studを保存しました! – FloatingRock

+0

数年後に落としていただき、ありがとうございました。 – amaleemur

+0

私は最初にこの答えをupvotedした後、何年も後に落ちました。 – lakesare