julia - UndefVarError: * 未定义
问题描述
我遇到一个持续错误,当我在正在处理的包中使用乘法时,Julia 告诉我乘法运算符未定义。我没有在包中的任何地方重新定义或扩展基本乘法运算符,并且在某些地方可以识别乘法,而在其他地方则不能。例如,在下面的代码中
Λ = 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 中的乘法似乎没有相同的错误。
我已经尝试过Using Base: *
,并且import Base.*
在文件中的主模块和单个 Julia 包中都无济于事。关于可能发生的事情有什么想法吗?
解决方案
如果您稍后在函数中或在没有被占用的分支中不小心分配给它,则会出现这种情况。*
可能发生这种情况的一个简单的地方是在一个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
推荐阅读
- python - 仅使用熊猫查找月末日期的数据平均值
- gcc - GCC 标志忽略指令依赖
- android - Android 工具栏和菜单让我发疯
- scala - scala中的访问修饰符位置解释
- ios - 如果单击按钮 - 制作动画以成像 Swift Playgrounds
- github - 如何在 aws lambda 中克隆私有 git 存储库
- html - 如何在 django 中随机向不同用户提问?
- node.js - 我应该如何使用 firebase 和 express 发送重置密码电子邮件?
- powershell - ffmpeg在编码时保持完整标题
- c++ - 为什么 Clang 给出错误 no member named 'copy' in namespace 'std'