※ 本文轉寄自 ptt.cc, 文章原始頁面
作者ZooseWu
標題

[閒聊] 程式大師請進

時間
最新2021-11-11 18:56:00
留言46則留言,11人參與討論
推噓13 ( 14131 )
我有兩個class A 與 B 他們有80%的功能與函示名稱相似 然後我只有runtime的時候才知道物件身上有哪一個class 我有一個好方法可以簡單的呼叫 (A|B).function嗎 對了class不是我寫的 所以我沒辦法透過寫interface然後讓AB繼承這種方法 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.227.137.134 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1636626112.A.586.html

46 則留言

aynmeow, 1F
if a 反射a

SuicidePeko, 2F
(a)obj.fuckPeko()

ZooseWu, 3F
要用反射喔:( 反射感覺就很吃資源

aynmeow, 4F
不用反射 case過去吧 夠簡單惹

yam276, 5F
兩個完全不同的class嗎

ZooseWu, 6F
所以我有30條function 就要寫30個switch?

aynmeow, 7F
除非你想去撈function2名稱做壞事 不然應該case就可以惹

aynmeow, 8F

ZooseWu, 9F
應該說兩個套件實做同樣的功能 函示或變數名稱大部分一樣

aynmeow, 10F
不用switch吧 就好多if else哈哈智障智障ㄉ

ZooseWu, 11F
我本來想用泛型 whereA,B 可是好像沒有這種用法

ZooseWu, 12F
我現在就是用if else 可是要用的功能越來越多

ZooseWu, 13F
想說有沒有一勞永逸的通用解法

MurasakiSion, 14F
什麼語言啊
javascript可以簡單的用 if(typeof obj[FunctionName] === 'function') obj[FunctionName]() 可是我寫的是C#
※ 編輯: ZooseWu (36.227.137.134 臺灣), 11/11/2021 18:29:41

penguinsFly, 15F
不然你替他們兩個寫一個寫死的proxy

ZooseWu, 16F
那啥

yam276, 17F
代理模式

MurasakiSion, 18F
沒寫過C++++ 苦

kerycheng, 19F
沒寫過C= =

kerycheng, 20F
用python用太久都變白癡了

ZooseWu, 21F
就是寫一個中間層把所有的功能都實做一遍 然後看狀況

ZooseWu, 22F
呼叫A或B喔

SuicidePeko, 23F
每個函數定義一個 裡面就做if a a.call() else

ZooseWu, 24F
好智障 可是好像也只能這樣了

kerycheng, 25F
沒辦法從開頭給的一些變數或數值直接先去判斷要用哪個

kerycheng, 26F
一定要在跑的時候才會知道是嘛?

ZooseWu, 27F
每個物件都有A 只是有可能有B 有B就要叫B 沒有就叫A

SuicidePeko, 28F
這就class先天結構就不對了==只有遠路可走

SuicidePeko, 29F
用object 然後(a) (b) 這樣會很慢噢??

kerycheng, 30F
這到底是誰寫的啊= =也太怪了吧

lopp54321010, 31F
那樣是unboxing 不到很慢 但是有GC

MurasakiSion, 32F
不能寫介面給AB繼承那能寫class繼承AB嗎

ZooseWu, 33F
就是不行啊 一個是引擎的class 一個是套件的class
套件在原本引擎的功能上實作其他功能 之後都要叫套件才有用 但是不是所有物件都有使用到套件 沒用到套件的物件就要呼叫引擎的物件
※ 編輯: ZooseWu (36.227.137.134 臺灣), 11/11/2021 18:40:01

SuicidePeko, 34F
原來叫unboxing 學到了

ZooseWu, 35F
看起來寫代理就是唯一解了

jajeongsalan, 36F
建map跟列舉 要用的時候把列舉丟進mapget出來
有點不太懂 能不能隨便寫個pseudo code讓我感覺一下
※ 編輯: ZooseWu (36.227.137.134 臺灣), 11/11/2021 18:45:16

MurasakiSion, 37F
GetType().GetMethod()?

lopp54321010, 38F
GetMethod()就太刺激了捏

ZooseWu, 39F
GetMethod就是反射了吧

penguinsFly, 40F
不准反射 給我寫代理==

lopp54321010, 41F
反射最麻煩的是發行的時候如果要混淆之類的會壞掉捏

SuicidePeko, 42F
感覺定義函數岔路的時候可以用delegate弄

SuicidePeko, 43F
ternary + delegate? 不知道可讀性會如何就是了

ZooseWu, 44F
小腦袋好痛 我慢慢思考醞釀一下

Apache, 45F
function map不適用這種情況

lturtsamuel, 46F
不准反射== 醜死了

ZooseWu 作者的近期文章

[閒聊] 為什麼要600次登入
600次登入很難欸 我都不知道我有沒有登入600次 而且還要發超過30篇文章才能選 故意搞人嗎
Re: [閒聊] 羅森被判12年耶
※ 引述《forsakesheep (超.歐洲羊)》之銘言: : 羅森會被判這麼重除了寫色色小說以外 : 就是他有建一個平台讓其他作者可以上架色色小說 : 讀者付費看色文 : 穩死的,讀者不檢舉你其他平台也會檢舉 : 要開這種,人不留在台灣
[閒聊] 味丹吃飯
今天跟味丹吃飯 第一眼看起來跟普通人沒什麼差別 沒想到火鍋端上來之後 味丹從包包拿出金箔開始撒 我想說幹味丹在幹嘛 他說他吃飯都這樣 吃東西都要撒金箔吃 我說金箔不是沒有味道 他說他家從小教他吃飯就是要這樣吃 最後他也撒了一點在我的火鍋裡面
Re: 人只能是目的而不是手段 怎麼理解
※ 引述《Victoryking (蓮蓮搖了我吧)》之銘言: : 如果你認同 己所不欲勿施於人 : 但是你所立的道德法則 是要成為普遍法則的 勝王 之前討論善的問題我就想問你但是後來忘了 有很長一段時間我也以我的道德法則是普遍法則的話會如何
更多 ZooseWu 作者的文章...