什麼是多重分派
一般的多態是單重分派,即一個基類指針(或引用)直接到綁定到某一個子類對象上去,以獲得多態行爲。就像java 那樣。
但是Julia多重派發機制,有它自己的特點,這裏給出一些代碼,並展示多重派發的函數如何回調父類函數。並參考 手冊中https://docs.julialang.org/en/v1/base/base/#Core.invoke中關於invoke 的使用。其他一些詳細內容可可以參考以下幾篇文章:
(2)https://docs.juliacn.com/latest/manual/methods/#%E8%BF%AD%E4%BB%A3%E5%88%86%E6%B4%BE-1
(3)https://zhuanlan.zhihu.com/p/105953560,這篇文章比較好。
代碼示例:
x=1
#這是原始的函數,適用與所有的Number類型
function dosth(x::Number)
println(1) # 可以用其他代碼替換
end
dosth(x)
#輸出
#1
#現在需要對特定於Int64的類型,做一些額外事情,並重用現有的代碼,就可以這麼做
function dosth(x::Int64)
invoke(dosth, Tuple{Number}, x) #使用invoke,注意傳遞的參數方式
println(2) #可以添加其他額外的功能
end
dosth(x)
#輸出
#1
#2