Julia : LoadError: UndefVarError: X not defined

Julia : LoadError: UndefVarError: X not defined

我在 Julia 中有一个简单的代码:

X = 1.0
for i=1:3
  X = X*i
end
println("X = ",X)

抛出错误:LoadError: UndefVarError: X not defined

为什么会这样?

如何在 Julia 中定义一个简单的变量?

同时抛出警告:

Warning: Assignment to `X` in soft scope is ambiguous because a global variable by the same name exists: `X` will be treated as a new local. Disambiguate
by using `local X` to suppress this warning or `global X` to assign to the existing global variable.

here also asked

我认为您是在没有任何功能的普通文件中执行此代码。 这意味着 X 是在主范围内声明的,即全局范围。这是一种特殊情况,因为可以从代码中的任何位置“看到”此变量。

但是,通过创建 for 块,您将创建一个与全局变量具有相同标签的局部变量。这对编译器来说是模棱两可的,它不知道您是尝试创建一个新变量还是使用全局变量。为了消除歧义,localglobal 关键字在此处指定您要执行的操作。

要解决您的问题而无需指定全局或局部(和 avoid performance issues),您只需在函数内声明代码即可。这样你的变量 X 已经是本地的:

function myfactorial()
   X = 1.0
   for i in 1:3
       X = X*i
   end
   println("X = $X")
end