作者WanCW (旺小王)
看板Ruby
标题[Ruby] overload?!
时间Fri Sep 22 17:38:39 2006
因为 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