为什么数组{Float64,1}不是Julia中数组{Real,1}的子类型?
我正在尝试编写一个Julia函数,它可以接受一维Int64和Float64数组作为输入参数。在不定义两个版本(一个用于Int64,另一个用于Float64)的情况下,如何做到这一点为什么数组{Float64,1}不是Julia中数组{Real,1}的子类型?,julia,Julia,我正在尝试编写一个Julia函数,它可以接受一维Int64和Float64数组作为输入参数。在不定义两个版本(一个用于Int64,另一个用于Float64)的情况下,如何做到这一点 我尝试使用数组{Real,1}作为输入参数类型。但是,由于数组{Int64,1}不是数组{Real,1}的子类型,因此这无法工作。一种真正的、不安全的方法是,例如: function square(x) # The point is for element-wise operation out = x
我尝试使用数组{Real,1}作为输入参数类型。但是,由于数组{Int64,1}不是数组{Real,1}的子类型,因此这无法工作。一种真正的、不安全的方法是,例如:
function square(x)
# The point is for element-wise operation
out = x.*x
end
输出:
julia> square(2)
4
julia> square([2 2 2])
1×3 Array{Int64,2}:
4 4 4
你试过数组吗{我试过了,它能用。非常感谢。但我很好奇为什么它能用?它们之间有什么区别?有关更多信息以及不变性和协方差的定义,请参阅。你最感兴趣的是如何使用这个设计,还是为什么这个设计一开始就是这样?