読者です 読者をやめる 読者になる 読者になる

Rubellum fly light

ほぼPHP日記

Rubyのオブジェクトについてのメモ

だいぶ曖昧なのは自分の理解が足りないため。

クラス/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

タイトルは「パルスのファルシのルシがパージでコクーン」を意識した。