UndefVarError: * 未定义

1 julia

我有一个持久性错误,Julia 告诉我当我在我正在处理的包中使用乘法时乘法运算符未定义。包中的任何地方都没有重新定义或扩展 Base 乘法运算符,并且有一些地方可以识别乘法,而另一些地方则不能。例如,在下面的代码中

    ? = h.metric.? # Type Int64
    kSize = 2*?+1
    for i = 1:n_steps
        # Tempering
        r = temper(lf, r, (i=i, is_half=true), n_steps)
        # Take a half leapfrog step for momentum variable
        r = r - map(gradi -> ? / 2 .* gradi, grad)
Run Code Online (Sandbox Code Playgroud)

第 2 行的乘法给了我,UndefVarError: * not defined而最后一行的乘法编译和执行没有错误。

包外和 Visual Studio Code 上的 Julia REPL 中的乘法似乎没有相同的错误。

我试着Using Base: *import Base.*主模块和文件无济于事在个人朱莉娅两种封装英寸 关于可能发生什么的任何想法?

Mat*_* B. 7

如果您不小心分配*函数的稍后部分或未采用的分支中,则会出现这种情况。一个容易发生这种情况的地方是在一个if打算询问 ifa*b == c但错误地使用=而不是的表达式中==

julia> function test(a, b, c)
           d = a*b
           if (a*b = c)
               println("got $d")
           end
       end
test (generic function with 1 method)

julia> test(2,3,6)
ERROR: UndefVarError: * not defined
Stacktrace:
 [1] test(a::Int64, b::Int64, c::Int64)
   @ Main ./REPL[4]:2
 [2] top-level scope
   @ REPL[5]:1
Run Code Online (Sandbox Code Playgroud)