我看到這樣的事情this library:,從他們的父母繼承的嵌套類
class A
# ...
class B < A
# ...
end
end
這是不奇怪?我得到了可以在其他類中聲明類的概念,但是這些嵌套類繼承自父類。這是不是像一個無限循環?
也許它看起來比較簡單,但這張圖片讓我猶豫不決。我在這裏錯過了一些隱藏的好處,還是我不知道的特殊Ruby成語?
我看到這樣的事情this library:,從他們的父母繼承的嵌套類
class A
# ...
class B < A
# ...
end
end
這是不奇怪?我得到了可以在其他類中聲明類的概念,但是這些嵌套類繼承自父類。這是不是像一個無限循環?
也許它看起來比較簡單,但這張圖片讓我猶豫不決。我在這裏錯過了一些隱藏的好處,還是我不知道的特殊Ruby成語?
命名空間和子類是兩個不同的東西。他們沒有任何關係。
這樣做:
class A
class B
end
end
你在A
命名空間定義B
,因此A::B
(但B
不是A
一個子類,實際上它是Object
子類)。
這樣做:
class A
end
class B < A
end
定義B
爲A
一個子類(但B
是不是在A
命名空間;事實上,它是主要的環境::
(或Object::
)的命名空間。
在您的例子:
class A
class B < A
end
end
兩個HAPP同時存在,但它們彼此獨立,並且沒有矛盾。
除了@ sawa的回答:這可以作爲重構過程中的中間步驟。
說,我遇到了一些大胖類,我清楚地看到幾個子類可以在這裏提取。但我還不知道他們的名字。而當我這樣做時,我可能會在這個過程中多次重命名它們。這使得爲每個子類創建一個文件成爲不必要的障礙。所以我開始在那裏聲明子類,並在同一個文件中移動代碼。當我有點滿意時,然後我會將子類移到他們的專用文件。或者,也許我不會,如果他們非常小(我覺得他們不值得一個單獨的文件)。