main
rubyのトップレベル(?)のselfはmainというオブジェクトだった。
% ruby -e 'p self' main
irbでも同じmainになってる。
なんかのクラスのインスタンスってわけじゃなくて素のObjectなようだ。
% irb irb(main):001:0> self => main irb(main):002:0> self.class => Object irb(main):003:0> self.inspect => "main"
んー、でもこれ以上とっかかりがない…。
なんに使うんだろ、これ。
irb(main):001:0> def foo(x) irb(main):002:1> x+1 irb(main):003:1> end => nil irb(main):004:0> foo(3) => 4 irb(main):005:0> self.foo(3) => 4
なるほど、関数を定義するとmainのメソッドになるのか。
% ruby -e 'p self.methods-Object.new.methods' ["include", "private", "public"]
mainが普通のオブジェクトと違うところはこの3つのメソッドを持ってるところか。
main
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%CD%D1%B8%EC%BD%B8
トップレベルでのself。 selfがないわけにはいかないので、ただそこにある ためだけの単なるObjectクラスのインスタンスであるが、 Objectクラスを操作するため、いくつかの特異メソッドを定義して ある。
定義されている特異メソッド
* private
* public
* include
なんだ。答えがこんな所にあったんじゃん。