- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:書籍 メタプログラミングRubyの中の一文)
クラス定義内のselfについて疑問
このQ&Aのポイント
- 書籍『メタプログラミングRuby』のP143には、クラス定義内でのselfについての記述があります。
- クラス定義内には、カレントオブジェクトselfとインスタンスメソッド内のselfが存在します。
- 質問者は、なぜクラス定義内でのselfという表現が用いられるのか疑問に感じています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
解釈としては間違ってないです。 「クラス定義の中で~」の文章を、「メソッド定義の中で~」が上書きする形で、別の意味を与えていると思えば良いと思います。 「クラス定義のコンテキストの中で」の略記と考えた方が良いか。
その他の回答 (1)
- ・真 綾・(@Ma-yan_bh1011)
- ベストアンサー率30% (79/257)
回答No.1
>クラス定義内で定義されるインスタンスメソッド内にあるselfを除くselfはカレントオブジェクトである selfは常にカレントオブジェクトですよ。 ひとつめ、ふたつめのselfは「クラス定義の中」なのでselfは定義されたクラス(クラス名)を返す。 みっつめは「メソッド定義の中」なのでselfはレシーバを返す。 「メタプログラミングRuby」は持っていませんが、そのすぐ後のページにメソッド定義の中のselfの話があるのでは?
お礼
ああ・・なるほど、定義したクラスからnewしたインスタンスで実行するインスタンスメソッド内のselfは、これも実行中のインスタンスメソッドからすれば同じくカレントオブジェクトということですか・・・。 なるほど・・・・。