Re: [Ruby] overload?!
補充一下…
※ 引述《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
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章