这里我预计Int类型但得到Float:
julia> function test()
i::Int = 3.0
end
test (generic function with 1 method)
julia> typeof(test())
Float64
,在这种情况下,返回类型是Int:
julia> function test()
i::Int = 3.0
i
end
test (generic function with 1 method)
julia> typeof(test())
Int64
这是正确的行为还是错误?
答案 0 :(得分:6)
以下是杰夫的一句话:
所以在第一个例子中,它相当于直接返回=
返回的内容,即3.0
:
julia> @code_lowered test()
CodeInfo(:(begin
nothing
SSAValue(0) = 3.0
i = (Core.typeassert)((Base.convert)(Main.Int, SSAValue(0)), Main.Int)
return SSAValue(0)
end))