作者godfat (godfat 真常)
看板Ruby
标题Re: [Ruby] overload?!
时间Sat Sep 23 02:27:06 2006
补充一下…
※ 引述《WanCW (旺小王)》之铭言:
: 有了这个 module ,我们就可以这样写:
: class Test
: include OverLoad
: def foo
: puts 'original foo'
: end
: overload :foo do |a,b|
由於这是 function call, 所以等同於
self.overload(:foo) do |a, b|
: puts a+b
: end
: overload :foo, String, String do |a,b|
这个等同於
self.overload(:foo, String, String) do |a,b|
: puts "the String is #{a} #{b}"
: end
: end
: 动态语言果然是好物! (Y)
方便是方便,但不知道这样会不会使效能变很差
变很差的时候,有什麽好方法将他快速改回原本的 func call?
例如把上面的 foo 改成:
def foo
#...
end
def foo_a_b(a, b)
#...
end
def foo_String_String(a, b)
#...
end
当然呼叫端也要改,感觉这可能需要写 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 好像不太可能解决…?
--
Hear me exalted spirits. Hear me, be you gods or devils, ye who hold
dominion here:
I am a wizard without a home. I am a wonderer seeking refuge.
Sacrifice
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.232.7.227