Re: [Ruby] overload?!

看板Ruby作者 (旺小王)時間18年前 (2006/09/25 16:03), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/5 (看更多)
※ 引述《godfat (godfat 真常)》之銘言: [略] : 方便是方便,但不知道這樣會不會使效能變很差 : 變很差的時候,有什麼好方法將他快速改回原本的 func call? 我覺得這個 module 的最大好處是要避免自己寫 if ... else .... / case ... when .... 這種既瑣碎又不好維護的 code,效能倒不是考量的重點。 [略] : 當然呼叫端也要改,感覺這可能需要寫 parser : 不過既然都要寫成 parser 了,有沒有可能直接改成使用設定值? : class Test : include OverLoad # 不是 Overlord 啊… : def foo : #... : end : def foo_a_b(a, b) : #... : end : def foo_String_String(a, b) : #... : end : overload_on :foo_a_b, :foo_String_String : end : 不過這樣的問題是,外界到底該怎麼呼叫 foo...? : 不寫 parser 好像不太可能解決…? 只有參數數量不同時,也許還能夠光靠 parser 處理; 若還要能區隔參數型態,我只想得到 OverLoad 的方式。 其實也可以定義 method 的命名規則,以達到完全自動分析, 但這樣一來又限制了 method 的命名。 我在想,把 wiki 上的 OverLoad module 改成這樣的用法: overload :foo, :foo_a_b do |a, b| ... end # 自動定義一個 method 'foo_a_b' overload :foo, :foo_strings, String, String # 呼叫定義好的 method 'foo_str' 可以自由選擇 "直接呼叫特定 method" 或是 "使用 overloaded methods" 或許是可以接受的折衷方案吧 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.182.108

09/25 22:31, , 1F
好主意 XD
09/25 22:31, 1F
文章代碼(AID): #155urEXT (Ruby)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 3 之 5 篇):
18年前, 09/22
1
1
文章代碼(AID): #155urEXT (Ruby)