📘
Julia言語のソフトスコープについて
ソフトスコープについて
Julia言語のソフトスコープについて解説します。
例
1から10の合計を求めるプログラムを例に解説します。
total = 0
for n in 1:10
total += n
end
println(total)
実行すると以下の例外が発生します。
s22s1@penguin ~/azumino % julia total.jl
┌ Warning: Assignment to `total` in soft scope is ambiguous because a global variable by the same name exists: `total` will be treated as a new local. Disambiguate by using `local total` to suppress this warning or `global total` to assign to the existing global variable.
└ @ ~/azumino/total.jl:4
ERROR: LoadError: UndefVarError: total not defined
Stacktrace:
[1] top-level scope
@ ~/azumino/total.jl:4
in expression starting at /home/s22s1/azumino/total.jl:3
for文自身がスコープを作り、スコープ外の変数の値を変更出来ないからです。total += n
からglobal total += n
にすると、1から10の合計を求めることが出来ます。
total = 0
for n in 1:10
global total += n
end
println(total)
Discussion