如何在不执行计算的情况下确定 Julia 中函数的结果类型

问题描述 投票:0回答:1

在 Julia 中,有没有一种方法可以在给定参数的情况下获取函数返回值的类型(或仅获取其参数的类型),而无需运行该函数?例如,我想这样做:

function foo(a, b)
    RetType = typeof(f(a, b))
   
    # do something
end

这里的问题是我实际上在

f
a
上调用了
b
来获取返回类型。有没有办法避免函数调用?类似于
promote_type
或相关函数的东西?

types julia
1个回答
0
投票

您可以定义以下函数:

gettype(f, a, b) = last(@code_typed f(a, b))

现在你可以做:

julia> gettype(+, 1, 2)
Int64

julia> gettype(+, 1, 2.)
Float64

julia> gettype(append!, Int[], 3)
Vector{Int64} (alias for Array{Int64, 1})
© www.soinside.com 2019 - 2024. All rights reserved.