【发布时间】:2019-11-06 04:43:22
【问题描述】:
我正在尝试编写一个 Julia 函数,它可以接受一维 Int64 和 Float64 数组作为输入参数。如果不定义两个版本(一个用于 Int64,另一个用于 Float64),我该如何做到这一点?
我尝试使用 Array{Real,1} 作为输入参数类型。但是,由于 Array{Int64,1} 不是 Array{Real,1} 的子类型,因此这是行不通的。
【问题讨论】:
-
你试过
Array{<:Real,1}吗? -
我试过了,它有效。非常感谢。但我很好奇为什么这有效?它们有什么区别?
-
<:Real指定它是一个包含Real子类型的数组,也就是说,如果有意义的话,Julia 会将其视为参数类型... -
有关更多信息,请参阅docs.julialang.org/en/latest/manual/types/…,有关不变性和协方差的定义,请参阅en.wikipedia.org/wiki/…。
-
您最感兴趣的是如何使用这个设计或者为什么这个设计首先是这样的?
标签: julia