簡體   English   中英

UndefVarError: * 未定義

[英]UndefVarError: * not defined

我有一個持久性錯誤,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)

第 2 行的乘法給了我UndefVarError: * not defined而最后一行的乘法編譯和執行沒有錯誤。

包外和 Visual Studio Code 上的 Julia REPL 中的乘法似乎沒有相同的錯誤。

我已經嘗試在主模塊和文件中的各個 Julia 包中Using Base: *import Base.*都無濟於事。 關於可能發生什么的任何想法?

如果您稍后在函數中或未采用的分支中意外分配*則會出現這種情況。 一個容易發生這種情況的地方是在if表達式中,該表達式旨在詢問是否a*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

沒有可重現的示例和完整的錯誤消息,很難提供幫助。 我能想到的唯一未定義*上下文是在baremodule

julia> *
* (generic function with 328 methods)

julia> module M1
       *
       end
Main.M1

julia> baremodule M2
       *
       end
ERROR: UndefVarError: * not defined
Stacktrace:
 [1] top-level scope
   @ REPL[2]:2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM