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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

October-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值