首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UndefVarError:*未定义

UndefVarError:*未定义
EN

Stack Overflow用户
提问于 2021-06-16 23:47:44
回答 2查看 150关注 0票数 1

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

代码语言:javascript
复制
    Λ = 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代码上的Julia REPL中似乎没有相同的错误。

我已经在主模块和文件中的单个Julia包中尝试了Using Base: *import Base.*,但都没有用。对可能发生的事情有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2021-06-17 02:47:39

如果你在后面的函数中或者在一个没有被采用的分支中意外地赋值给了*,就会出现这种情况。最容易发生这种情况的地方是在if表达式中,该表达式打算询问a*b == c,但错误地使用了=而不是==

代码语言:javascript
复制
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
票数 7
EN

Stack Overflow用户

发布于 2021-06-17 00:44:20

如果没有可重现的示例和完整的错误消息,就很难有所帮助。我能想到的唯一未定义*的上下文是在baremodule

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68006034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档