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

 

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