2016-08-12 13 views
1

私は、次のプログラムを作成し、.RBファイルとして保存なぜRubyスクリプトを実行すると、クラス内のコードが自動的に実行されるのですか?

class Classname 
    puts "hi" 
end 

、端末内のファイルを実行するには、出力が「HI」が返されます。なぜか分からない。そのputs文をメソッドに代入したり、Classnameクラスのオブジェクトを作成したり、そのオブジェクトを出力してその出力を取得したりする必要はありませんか?または、少なくともputsステートメントをクラスのinitializeメソッドに入れ、オブジェクトを作成しますか?なぜこれはそれが動作するのでしょうか?

+3

'class'キーワードを使用してクラスを定義すると、新しい' Class'オブジェクトが実際に構築され、そのコンテキスト内で内部コードが実行されます。 http://stackoverflow.com/a/9202363/591495 – oldrinb

+0

クラス内のコードが実行されなかった場合、メソッドをどのように定義しますか?クラス内のコードが実行されなかった場合、 'attr_accessor'メソッドをどのように呼び出すでしょうか?オブジェクトが初期化される前に 'initialize'の定義のクラスが実行されなかった場合、インスタンスをどのように作成しますか?なぜ、あなたが作成するすべてのインスタンスに対して 'initialize'メソッドの定義を何度も何度も何度も実行しなければならないのでしょうか? –

答えて

4

Rubyはあなただけの任意のクラスやメソッドを定義せずに、ファイル内

puts 'hi' 

を書くことができることを意味スクリプト言語です。同様に、クラスを定義するときに、実際にクラスを定義するためのコードを実行しています。副作用があるコードを実行すると、puts 'hi'などのコードを実行できます。これは、クラスの定義に役立つメタプログラミングがRubyでよく使用されるために便利です。

関連する問題