为什么julia不能识别作为函数参数传递的数组类型,将其列为Any?

Jis*_*hnu 2 arrays julia

我在julia中定义了一个函数,它接受一个向量(特别是Vector{Complex128}).当我看到输出时,@code_warntype我看到变量类型被列为Any.据我所知,这可能会产生速度影响.这是代码的简单版本,例如:

function abc(h::Vector{Complex128})
   a=1+2
end
Run Code Online (Sandbox Code Playgroud)

输出@code_warntype

julia> @code_warntype abc(zeros(Complex128,2))
Variables:
  #self#::#abc
  h::Any
  a::Int64

Body:
  begin 
    SSAValue(0) = (Base.add_int)(1, 2)::Int64
    return SSAValue(0)
  end::Int64
Run Code Online (Sandbox Code Playgroud)

变量的类型h列为Any.我是朱莉娅的新手,不知道我在这里遗失了什么.这种行为似乎并不具体Vector{Complex128},我也得到了同样的行为Vector{Float64}.我在这里不正确地注释变量类型,或者这是它应该如何工作?我正在使用julia v0.6.0,如果这很重要的话.

Chr*_*kas 5

这是因为编译器已将其优化,因此它甚至不存在.它的打印方式在v0.6.1中已经更改为更清晰:

julia> function abc(h::Vector{Complex128})
          a=1+2
       end
abc (generic function with 1 method)

julia> @code_warntype abc(zeros(Complex128,2))
Variables:
  #self# <optimized out>
  h <optimized out>
  a <optimized out>

Body:
  begin
      SSAValue(0) = (Base.add_int)(1, 2)::Int64
      return SSAValue(0)
  end::Int64
Run Code Online (Sandbox Code Playgroud)