📘

Julia言語のソフトスコープについて

2023/01/31に公開

ソフトスコープについて

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