for 循环中定义的局部变量在第 2 次循环中无法调用
技术分享
发布于 2025-08-06 16:31:22
查看 1过去300天
问题现象
如下图,在第一次循环中定义了局部变量defdg,但是第2次循环中打印此变量时报错:

代码:
a=1
for i=1:2
if a==1
bwq=2
println("a=$(a)")
else
bwq =3
println(defdg)
end
a+=1
defdg=100
end
解决方法
在Julia中,for循环涉及到作用域的问题,循环内部定义的同部变量默认在每次迭代之间是不可见的。每次循环迭代都会重新创建变量,如果希望在两次迭代之间共享值,需要将该变量放在循环外部。
通过添加local可以将变量定义为局部变量,添加global定义为全局变量,将上述代码修改为如下:
a=1
for i=1:2
local defdg=100
if a==1
bwq==2
println("a=$(a)")
else
bwq=3
println(defdg)
end
global a +=1
end
即可解决报错问题,得到正确结果:

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境