3
如果我創建:爲什麼Array.constants不能在Object類中顯示常量列表?
class Test1
A = 4
end
class Test2 < Test1
end
Test2.constants
返回[:A]
因爲它派生自Test1
A
。 Array.constants
是[]
,儘管它的超類是Object
而Object.constants
有很多值。 Array
怎麼沒有派生出這些值?
不是黑魔法,只是普通的舊C代碼。雖然你是對的,但是理解類/模塊/對象繼承鏈並非易事:-) – DMKE
如果是這種情況,那麼當你聲明一個新類Foo時,常量Foo駐留在哪裏?我認爲它將駐留在Object類中,就像您聲明的任何其他常量一樣。如果Foo要駐留在Object類中,那麼Object.constants應該真的返回您引用的大量列表,包括Foo –
@ user3727771您是對的。經過進一步調查,「Object.constants」確實正在調用實例方法。我不清楚爲什麼我們沒有看到每個班級常量的完整列表。我正在通過C代碼挖掘原因。用實際答案編輯 – Max