Julia ---- 多重分派

什麼是多重分派     

一般的多態是單重分派,即一個基類指針(或引用)直接到綁定到某一個子類對象上去,以獲得多態行爲。就像java 那樣。

但是Julia多重派發機制,有它自己的特點,這裏給出一些代碼,並展示多重派發的函數如何回調父類函數。並參考 手冊中https://docs.julialang.org/en/v1/base/base/#Core.invoke中關於invoke 的使用。其他一些詳細內容可可以參考以下幾篇文章:

(1)https://docs.juliacn.com/latest/manual/methods/#%E5%9F%BA%E4%BA%8E-Trait-%E7%9A%84%E5%88%86%E6%B4%BE-1

(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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章