gpt4 book ai didi

arrays - Julia:如何正确定义使用依赖于数字的类型的函数?

转载 作者:行者123 更新时间:2023-12-01 09:46:48 26 4
gpt4 key购买 nike

我使用数组,但我不需要随时更改长度,但同时我在编写代码时不知道它们的长度。我只在需要创建它们时才知道长度。

特别是我正在使用 StaticArrays,我想定义一个 f(v::MVector{N,Float64}) 类型的函数,它将接受一个 MVector 任意长度。我该如何输入?

最佳答案

对于一个运行示例,假设我们有一个固定长度的向量 mv,但我们只在运行时知道它的长度。它可以这样定义:

julia> using StaticArrays

julia> mv = @MVector rand(4)
4-element MVector{4,Float64}:
0.978253
0.691035
0.988942
0.770601

要定义一个对这个向量进行操作的函数,我们可以这样写:

julia> mysum(v::MVector{N,Float64}) where {N} = sum(v)

请注意 where {N} 符号,它可以处理所有固定大小。

但这是不必要的。写作:

julia> mysum2(v) = sum(v)

可以针对特定长度进行优化,即使在运行时也是如此,因为会为每种类型的参数编译一个新版本的函数。这是因为 Julia 根据参数类型专门化了一个函数。 MVectors 在其类型中包含长度,因此在运行时生成并使用此长度的专用函数。

关于arrays - Julia:如何正确定义使用依赖于数字的类型的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47036079/

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