以下のようなコードがある。
---------------------------------
class Point
def hello
z = "test"
self
end
endp0 = Point.new
p p0.hello.class
---------------------------------
#selfがあると => Point
#selfがないと => String
selfがあるとないとでは、大違いですね。
今日、
「selfがあるのとないのとでどう違うの?」
と言う質問をうけて即答できなかった・・・。Rubyの基礎が足りませんね・・・。
「たのしいRuby」を今週は読み込もうと思います。
self は「擬似変数」
擬似変数は変数のように参照することができますが、いずれも値を設定することはできません。
代入を行うとエラーになります。
● 擬似変数●通常の変数以外に擬似変数と呼ばれる特殊な変数があります。
self
現メソッドのオブジェクトそのもの
nil
NilClass?クラスの唯一のインスタンス
true
TrueClass?クラスの唯一のインスタンス。真の代表値
false
FalseClass?クラスの唯一のインスタンス。偽を表す
__FILE__
現在のソースファイル名を表す
__LINE__
現在のソースファイル中の行番号を表す