推 littleshan: 那個 == 就是萬惡的 multimethod 啊 XD 03/06 20:04
→ littleshan: idiomatic 的寫法就是 double dispatch 03/06 20:04
→ littleshan: 但實際上這是語言的限制,有些語言就支援multimethod 03/06 20:09
→ carylorrk: 我也覺得與其說是 OOP 的問題,不如說是語言的問題XD 03/06 20:21
→ carylorrk: 只要扯到雙方形態的問題,首先就想到 double dispatch 03/06 20:22
→ carylorrk: 糟糕 感覺好像馬後炮,跟着一樓重複了一遍XD 03/06 20:26
→ suhorng: XDDDDDD 03/06 21:43
→ suhorng: 類似的東西 subtype 到底該怎麼做... 03/06 21:44
→ suhorng: 感謝提供關鍵字! 來學 Common Lisp 03/06 22:17
→ drm343: 樓上不是會嗎? 03/06 23:24
我只有學過 Scheme 5...
推 purpose: == 的狀況,還是有可能 B 跟 A*互動的,所以我覺得還是他 03/06 23:42
→ purpose: 老人家原本拿來嘴泡的例子,比較適合出來拿出來罵繼承 03/06 23:43
→ purpose: 就是動物類別決定,兩個動物交配產生動物,可是繼承之後 03/06 23:44
→ purpose: 就會亂多出一個根本不該存在的,長頸鹿跟動物交配的函數 03/06 23:45
對, 有可能 B 跟 A* 有互動, 但是常見的動態語言跟靜態型別語言在這邊的處理
真的滿不一樣的. 像 Ruby 直接寫就會覆寫掉, 在 C++ 跟 Java 會變 overloading
( 而且 C++ 還會把名稱蓋掉, 要用 ptrB->A::operator==(....) )
這邊是之前在想 operator== 能不能比較可延伸的做的時候聯想到的,
一方面也是讀了一篇論述說用繼承 induced 的 subtyping relation 在某些 case
表現不好
推 Killercat: 這篇其實還滿心有戚戚焉的 XD 有時候拿到東西還得 03/07 14:10
→ Killercat: 用debugger確定是不是跑到我預想的class function 03/07 14:10
→ Killercat: 早一點的debugger還沒辦法對應template 碰到就很慘 03/07 14:11
得這樣做也太難過了QQ...
※ 編輯: suhorng (36.225.42.83), 03/08/2015 23:40:58
※ 編輯: suhorng (36.225.42.83), 03/08/2015 23:41:13
※ 編輯: suhorng (36.225.42.83), 03/08/2015 23:47:01