[闲聊] 程式大师请进

楼主: ZooseWu (N5)   2021-11-11 18:21:49
我有两个class A 与 B
他们有80%的功能与函示名称相似
然后我只有runtime的时候才知道物件身上有哪一个class
我有一个好方法可以简单的呼叫 (A|B).function吗
对了class不是我写的
所以我没办法透过写interface然后让AB继承这种方法
作者: aynmeow (只有我跟喵喵)   2021-11-11 18:22:00
if a 反射a
作者: SuicidePeko (string int = true;)   2021-11-11 18:23:00
(a)obj.fuckPeko()
楼主: ZooseWu (N5)   2021-11-11 18:23:00
要用反射喔:( 反射感觉就很吃资源
作者: aynmeow (只有我跟喵喵)   2021-11-11 18:24:00
不用反射 case过去吧 够简单惹
作者: yam276 ('_')   2021-11-11 18:24:00
两个完全不同的class吗
楼主: ZooseWu (N5)   2021-11-11 18:24:00
所以我有30条function 就要写30个switch?
作者: aynmeow (只有我跟喵喵)   2021-11-11 18:25:00
除非你想去捞function2名称做坏事 不然应该case就可以惹ㄅ
楼主: ZooseWu (N5)   2021-11-11 18:25:00
应该说两个套件实做同样的功能 函示或变量名称大部分一样
楼主: ZooseWu (N5)   2021-11-11 18:26:00
我本来想用泛型 where: A,B 可是好像没有这种用法我现在就是用if else 可是要用的功能越来越多想说有没有一劳永逸的通用解法
作者: MurasakiSion (紫咲シオン)   2021-11-11 18:27:00
什么语言啊
作者: penguinsFly (企鹅会飞)   2021-11-11 18:30:00
不然你替他们两个写一个写死的proxy
楼主: ZooseWu (N5)   2021-11-11 18:30:00
那啥
作者: yam276 ('_')   2021-11-11 18:30:00
代理模式
作者: MurasakiSion (紫咲シオン)   2021-11-11 18:31:00
没写过C++++ 苦
作者: kerycheng (kk)   2021-11-11 18:32:00
没写过C= =用python用太久都变白痴了
楼主: ZooseWu (N5)   2021-11-11 18:32:00
就是写一个中间层把所有的功能都实做一遍 然后看状况呼叫A或B喔
作者: SuicidePeko (string int = true;)   2021-11-11 18:32:00
每个函数定义一个 里面就做if a a.call() else
楼主: ZooseWu (N5)   2021-11-11 18:33:00
好智障 可是好像也只能这样了
作者: kerycheng (kk)   2021-11-11 18:34:00
没办法从开头给的一些变量或数值直接先去判断要用哪个一定要在跑的时候才会知道是嘛?
楼主: ZooseWu (N5)   2021-11-11 18:34:00
每个物件都有A 只是有可能有B 有B就要叫B 没有就叫A
作者: SuicidePeko (string int = true;)   2021-11-11 18:34:00
这就class先天结构就不对了==只有远路可走用object 然后(a) (b) 这样会很慢噢??
作者: kerycheng (kk)   2021-11-11 18:35:00
这到底是谁写的啊= =也太怪了吧
作者: lopp54321010 (嘻嘻010)   2021-11-11 18:36:00
那样是unboxing 不到很慢 但是有GC
作者: MurasakiSion (紫咲シオン)   2021-11-11 18:37:00
不能写接口给AB继承那能写class继承AB吗
楼主: ZooseWu (N5)   2021-11-11 18:38:00
就是不行啊 一个是引擎的class 一个是套件的class
作者: SuicidePeko (string int = true;)   2021-11-11 18:39:00
原来叫unboxing 学到了
楼主: ZooseWu (N5)   2021-11-11 18:40:00
看起来写代理就是唯一解了
作者: jajeongsalan (插总撒狼)   2021-11-11 18:41:00
建map跟列举 要用的时候把列举丢进mapget出来
作者: MurasakiSion (紫咲シオン)   2021-11-11 18:44:00
GetType().GetMethod()?
作者: lopp54321010 (嘻嘻010)   2021-11-11 18:45:00
GetMethod()就太刺激了捏
楼主: ZooseWu (N5)   2021-11-11 18:46:00
GetMethod就是反射了吧
作者: penguinsFly (企鹅会飞)   2021-11-11 18:46:00
不准反射 给我写代理==
作者: lopp54321010 (嘻嘻010)   2021-11-11 18:47:00
反射最麻烦的是发行的时候如果要混淆之类的会坏掉捏
作者: SuicidePeko (string int = true;)   2021-11-11 18:48:00
感觉定义函数岔路的时候可以用delegate弄ternary + delegate? 不知道可读性会如何就是了
楼主: ZooseWu (N5)   2021-11-11 18:50:00
小脑袋好痛 我慢慢思考酝酿一下
作者: Apache (阿帕契)   2021-11-11 18:53:00
function map不适用这种情况
作者: lturtsamuel (港都都教授)   2021-11-11 18:56:00
不准反射== 丑死了

Links booklink

Contact Us: admin [ a t ] ucptt.com