gpt4 book ai didi

arrays - Julia 中的通用数值数组

转载 作者:行者123 更新时间:2023-12-01 07:23:43 25 4
gpt4 key购买 nike

我试图通过阅读文档来学习 Julia,他们的代码如下所示:

function testFunction(x::Number)
return x+5
end

这是一个适用于 Juila 中许多数字类型中的任何一种的函数。

但是,如果我尝试做类似的事情,如下所示:
function testFunction2(x::Array{Number})
return x
end

我收到以下错误:
ERROR: MethodError: no method matching testFunction2(::Array{Int64,1})
Closest candidates are:
testFunction2(::Array{Number,N} where N) at /Users/.../Desktop/Test.jl:45

难道我做错了什么?我是这么想的: Array{Float64}是如何声明特定类型的数组,但使用类似 Number 的类型,适用于常规情况,在这里不起作用......任何见解表示赞赏。

最佳答案

定义

function testFunction2(x::Array{Number})
return x
end

是接受 Array{Number} 作为输入的识别函数.因此,以下将起作用:
testFunction2(collect((1,3,-2.7,5+2im)))
但这不起作用:
testFunction2([1,3,7,9])
这可以从这里看出:
julia> typeof(collect((1,3,-2.7,5+2im)))
Array{Number,1}

julia> typeof([1,3,7,9])
Array{Int64,1}

第一个匹配 x 的类型在您对 testFunction2 的定义中第二个没有。 (注意 Array{Number}Array{Number,1} 的同义词。)

您正在寻找的是一个函数,它接受任何元素类型的数组,该数组是 Number 的子类型。 .这是这样做的:
function testFunction2(x::Array{T}) where {T<:Number}
return x
end

现在我们有一个参数 T允许是 Number 的任何子类型.你也可以使用糖
function testFunction2(x::Array{<:Number})
return x
end

甚至 testFunction2(x::Array{<:Number}) = x .

关于arrays - Julia 中的通用数值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50440551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com