如何指定我要在函数中返回4 Int32的向量?

M.E*_*.E. 1 julia

如果我想指定我的函数返回一个布尔值,我会这样做:

function myfunc(a,b)::Bool
Run Code Online (Sandbox Code Playgroud)

如果我想指定返回4个Int32元素的向量怎么办?

a = Vector{Int32}(undef, 4)
Run Code Online (Sandbox Code Playgroud)

Lyn*_*ite 5

您不能,也不必。

返回类型注释用于声明返回类型。

a的长度Vector不是其类型的一部分。它是其价值的一部分,并且可以改变。(例如push!可以调用它)。

注意:

julia> typeof([1,2,3,4])
Array{Int64,1}
Run Code Online (Sandbox Code Playgroud)

Vector{T}只是一个常量 Array{T,1}

因此,您要做的就是delcare类型:

function myfunc(a,b)::Vector{Int}
Run Code Online (Sandbox Code Playgroud)

或者,您可能希望从StaticArrays.jl获得NTuple{Int,4}一个Tuple{Int, Int, Int, Int},即一个或一个SVector{Int,4}


通常,返回类型注释不是超级有用。基本上可以归结为自动调用的代码convert{RETURNTYPE, raw_return_value),这可能会出错。如果您无法掌握从不同返回点返回的不同类型(如果有多个返回值),这有助于使代码保持类型稳定。

很少有可能有助于编译器类型推断。(因为convert总是返回指示的目标类型)。

有人认为这也有记录目的。