作者WanCW (旺小王)
看板Ruby
标题Re: [Ruby] overload?!
时间Mon Sep 25 17:20:03 2006
※ 引述《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
1F:推 godfat:好主意 XD 09/25 22:31