[Ruby] overload?!

看板Ruby作者 (旺小王)時間18年前 (2006/09/22 16:34), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/5 (看更多)
因為 Ruby 是 dynamic type + duck typing 所以語言本身並不支援 overload; 可是類似這樣的一段 code: def url_for(options = {}, *parameters_for_method_reference) #:doc: case options when String then options when Symbol then send(options, *parameters_for_method_reference) when Hash then @url.rewrite(rewrite_options(options)) end end 如果能有 overload 的機制還是比較方便。 本來想自己刻一個 overload module, 不過在 ruby.tw 的 wiki 找到了現成的 OverLoad module http://willh.org/cfc/wiki/index.php?title=Meta_Programming 有了這個 module ,我們就可以這樣寫: class Test include OverLoad def foo puts 'original foo' end overload :foo do |a,b| puts a+b end overload :foo, String, String do |a,b| puts "the String is #{a} #{b}" end end 動態語言果然是好物! (Y) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.182.108
文章代碼(AID): #154w0TPM (Ruby)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 5 篇):
18年前, 09/22
1
1
文章代碼(AID): #154w0TPM (Ruby)