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.*主模块和文件无济于事在个人朱莉娅两种封装英寸 关于可能发生什么的任何想法?
如果您不小心分配到*函数的稍后部分或未采用的分支中,则会出现这种情况。一个容易发生这种情况的地方是在一个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)