如果我想指定我的函数返回一个布尔值,我会这样做:
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
总是返回起诉的目标类型(。
有些人认为这也有助于文档目的。