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



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

function myfunc(a,b)::Bool

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

a = Vector{Int32}(undef, 4)

你不能,也不必。

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

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

通知:

julia> typeof([1,2,3,4])
Array{Int64,1}

(Vector{T}只是Array{T,1}的常数(

所以你要做的就是关心类型:

function myfunc(a,b)::Vector{Int}

或者,您可能需要一个NTuple{Int,4},即Tuple{Int, Int, Int, Int}, 或来自 StaticArrays.jl 的SVector{Int,4}


通常,返回类型注释不是很有用。 它基本上归结为代码自动调用convert{RETURNTYPE, raw_return_value),这可能会出错。 如果您忘记了从不同返回点(如果有多个返回点(返回的不同类型,这可能有助于使代码类型稳定。

它很少有助于编译器类型推断。(因为convert总是返回起诉的目标类型(。

有些人认为这也有助于文档目的。

最新更新