web-dev-qa-db-ja.com

Rubyの「メイン」とは何ですか?

このファイルを「Ruby x.rb」として実行すると、次のようになります。

class X
end
x = X.new

X.new」と呼んでいるものは何ですか?

それはオブジェクト/プロセス/その他ですか?

44
lorz

Rubyのすべては、あるオブジェクトのコンテキストで発生します。最上位のオブジェクトは「メイン」と呼ばれます。これは基本的に、そこで定義されたメソッドが追加される特別なプロパティを持つObjectのインスタンスです。 Objectのインスタンスメソッド(どこでも利用できるように)。

したがって、完全に次のもので構成されるスクリプトを作成できます。

puts object_id
@a = 'Look, I have instance variables!'
puts @a

「105640」と「見て、インスタンス変数があります!」と出力されます。

それはあなたが一般的に気にする必要があるものではありませんが、そこにあります。

50
Chuck

最上位の呼び出し元は、クラスObjectのオブジェクトmainです。

これを試してくださいRubyプログラム:

p self
p self.class
13
Igor Krivokon

Xクラスです。クラスXのオブジェクトを作成するメソッド "new"を呼び出しています。したがって、このテキストをスクリプトとして実行すると、Rubyは次のようになります。

  • objectのサブクラスであり、自動的に(Objectのサブクラスとして)いくつかのメソッドを継承する新しいクラスXを作成します。そのうちのnewは1つです。
  • 名前を設定しますx
  • その新しいクラスnewXメソッドを呼び出し、Xインスタンスオブジェクトを作成します。 xはそのオブジェクトへの参照を取得します。
3
Charlie Martin

行を実行しているのはRubyインタプリタです

x = X.new

多くのスクリプト言語と同様に、スクリプトは、ほとんどのコンパイル言語のような標準のエントリポイントメソッドではなく、上から下に解釈されます。

2
workmad3

チャーリー・マーティンが言ったように、X.newは、変数xに格納されているタイプXのオブジェクトを返すXクラスのコンストラクターの呼び出しです。

タイトルからすると、もう少し探していると思います。 Rubyはメインを必要とせず、表示された順序でコードを実行します。したがって、依存関係を呼び出す前に含める必要があります。

したがって、メインは、クラスまたはモジュール定義の外部で記述された手続き型コードです。

1
Tim Hoolihan