敲響OO時代的喪鐘 一種新的語言 2

2021-08-29 04:16:17 字數 1221 閱讀 4674

讓我們接著昨天的資料型別來討論。

datatype******** as polygon

這樣的判斷,其實是有漏洞的。假設多邊形中,有一條以上的直線,長度為0,那麼這個多邊形,就不是乙個三角形了。因此,我們需要修改line的型別定義:

datatypeline }

ok,有了這樣的line以後,我們得到的三角形、四邊形就是正確的了。

讓我們接著看看,怎麼定義:等腰三角形、直角三角形、正三角形、等腰直角三角形。

datatypeisosceles******** as ********

length原本是定義在line裡的乙個檢查方法,這個方法,等腰三角形並不能直接使用,因為isosceles********

並沒有繼承line。

datatypeequilateral******** as isosceles********

因為equilateral******** as isosceles********

,因此不需要再次定義length了。

datatyperight******** as ******** }

這個應該不難理解。接下來定義最後乙個「oo面臨的多重繼承難題」。

datatype

isoscelesright******** as isosceles********,right********

沒了?是啊,就這麼簡單,定義等腰直角三角形,成了最簡單的部分了。

下面說說這個資料型別定義的原理吧。在我看來,所謂資料型別,就是符合一系列邏輯判斷條件的資料。乙個資料,如果符合三角形的判斷條件,那麼它就是三角形,如果它同時符合等腰和直角的兩組——注意:是兩組,而非兩個——判斷條件,那麼他就是等腰直角三角形。

如果我們將正三角形的定義改以下:

datatypeequilateral******** as ********

它還是個等腰三角形嗎?當然,因為符合正三角形判定條件的三角形,可能可以通過等腰三角形的check。所以,其實所有的資料型別之間,並沒有任何關係,他們之間的那個as,只是為了解決check**的復用需要,任何資料,只要能夠通過某一型別的check,那麼它就實質上屬於那一型別。就這麼簡單,無歧義。大家以為如何?

(未完待續)

敲響OO時代的喪鐘! 物件導向的發展歷程

在寫完了哲學分析部分之後,我總算是喘了一口氣,彷彿穿越了最幽暗的深谷,終於走出了自己最不擅長的領域了。後來在 上和曹曉鋼聊了挺長時間,對於oo的批判,他認為有點過頭了。經過我的解釋,他提出了乙個更好的建議,清楚的說明自己批判的oo,究竟是哪乙個階段的oo,然後才不至於誤傷到已經改善過後的oo。所以我...

敲響OO時代的喪鐘! 物件導向的哲學破綻 2

2 形上學 當我寫下這個標題的時候,內心無比惶恐。當初,維根斯坦去找羅素,問到 你看我是不是乙個十足的白痴?羅素不知他為什麼這樣問,維根斯坦說 如果我是,我就去當乙個飛艇駕駛員,但如果我不是,我將成為乙個哲學家 可見哲學這東西,只有真正的天才才有能力去研究它。還好,我並不是要研究形上學,我只是要研究...

如何新增一種新的語言

android kk 以及kk以前的版本 在mediatek config projectconfig.mk或者mediatek config common projectconfig.mk檔案中找到巨集 mtk product locales,新增要新加的語言 例如斯瓦希里語 坦尚尼亞 是sw t...