在 Julia 中,有没有一种方法可以在给定参数的情况下获取函数返回值的类型(或仅获取其参数的类型),而无需运行该函数?例如,我想这样做:
function foo(a, b)
RetType = typeof(f(a, b))
# do something
end
这里的问题是我实际上在
f
和 a
上调用了 b
来获取返回类型。有没有办法避免函数调用?类似于 promote_type
或相关函数的东西?
您可以定义以下函数:
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})