だいぶ曖昧なのは自分の理解が足りないため。
クラス/Class/classの表記方法について
クラス/Class/classはすべて異なる(ものとして表記している)。
Class
クラスを表現するのに使用される普通のオブジェクト。
メソッドも持ってる。
class
classはクラスを定義するのに使う予約語。
Rubyはオープンクラスなので、スコープを変えてるといえるかも。
というかselfが変える?
すべての道はBasicObjectに通ず
MyClassを定義する。
[22] pry(main)> class MyClass; end
MyClassのスーパークラスをたどってみる。
[23] pry(main)> MyClass.superclass
=> Object
[24] pry(main)> MyClass.superclass.superclass
=> BasicObject
[25] pry(main)> MyClass.superclass.superclass.superclass
=> nil
MyClass -> Object -> BasicObjectの順で階層構造。
BasicObjectは親を持たない。
Classのスーパークラスをたどってみる。
[34] pry(main)> Class.superclass
=> Module
[35] pry(main)> Class.superclass.superclass
=> Object
[36] pry(main)> Class.superclass.superclass.superclass
=> BasicObject
[37] pry(main)> Class.superclass.superclass.superclass.superclass
=> nil
Class -> Module -> Object -> BasicObject という階層構造になっている。
みんなのClass
MyClass, Class, Module, Object, BasicObjectのクラスはClassである。
[27] pry(main)> MyClass.class
=> Class
[28] pry(main)> Class.class
=> Class
[29] pry(main)> Module.class
=> Class
[30] pry(main)> Object.class
=> Class
[31] pry(main)> BasicObject.class
=> Class
Classちゃんはみんなの友達なんだからっ!
トップレベルのオブジェクト
mainというObjectクラスのインスタンス(?)が用意されている。
[50] pry(main)> self
=> main
[51] pry(main)> self.class
=> Object
タイトルは「パルスのファルシのルシがパージでコクーン」を意識した。