self
selfとは
http://d.hatena.ne.jp/toshi_hirasawa/20080808/1360124848
のクラスメソッドの部分も参照のこと
selfはそのオブジェクト内ではオブジェクト自身を指す
なんでそうなるかといえば、
RubyにとってclassはClassクラスのインスタンスになる。
class Hoge〜の記述はclass宣言ではなく、
classインスタンスリテラルと捉えられる。
なのでclass 〜 end中のselfはClassクラスのインスタンス自身を指すことになり、クラスメソッドにselfをつけるのはそういう意味なのだ。
なので
クラスメソッド内部のselfもクラス自身を表すことになる
インスタンスメソッドを呼び出すときは内部のselfはオブジェクト=インスタンス自身となる。
トップレベルの場合はmainになるんだねぇ
[hirasawa@centos-hira ~]$ cat self.rb #!/usr/local/bin/ruby -Ku class Hoge def Hoge.hoge print "ほげ" p(self) end def self.piyo print "ぴよ" p(self) self.hoge end def wao print "わお" p(self) end end Hoge.hoge Hoge.piyo Hoge.new.wao p(self) [hirasawa@centos-hira ~]$
[hirasawa@centos-hira ~]$ ./self.rb ほげHoge ぴよHoge ほげHoge わお#<Hoge:0x9197b94> main [hirasawa@centos-hira ~]$
こちらを参考にさせていただきました。
http://yakinikunotare.boo.jp/orebase/index.php?Ruby%2F%A5%AF%A5%E9%A5%B9
俺の基地