BasicObject, Object, and Kernel
相互にどのように相互作用するかを理解するために、David A Black の本の100 ページにある以下のコードについて考えました。
class BasicObject
# a scant seven method definitions go here
end
module Kernel
# over 100 method definitions go here!
end
class Object < BasicObject
# one or two private methods go here,
# but the main point is to mix in the Kernel module
include Kernel
end
Object は BasicObject のサブクラスです。明示的なスーパークラスを持たないすべてのクラスは、Object のサブクラスです。このデフォルトの証拠は、irb で確認できます。
class C
end
#=>nil
C.superclass
#=>Object
わかりましたが、 David Black の著書にある以下の太字の行は、私を混乱させて理解できませんでした。
「すべてのクラスには Object があり、したがって Kernel とBasicObject
- がその先祖の中にあります。もちろん、 であり、 であり、 であるというパラドックスがあります。しかし、前に見たように、クラス モデルのわずかな循環性がジャンプに役立ちます。 -ヒエラルキーを開始し、いったん動き出すと、それは論理的かつクリーンに機能します。」BasicObject
Object
Object
Class
Class
Object
ここに私の質問があります:
-
なぜ彼は関係をパラドックスとして
言及した
BasicObject
のObject
ですObject
か?Class
Class
Object
- 彼はここで何
circularity
を言おうとしているのですか?