来自assignement的函数返回类型

时间:2017-10-10 07:04:16

标签: julia

这里我预计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

这是正确的行为还是错误?

1 个答案:

答案 0 :(得分:6)

以下是杰夫的一句话:

  

= returns the right-hand side every time. No exceptions.

所以在第一个例子中,它相当于直接返回=返回的内容,即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))