めもらんだむ

個人的な備忘録。Julia言語やPythonに関することが中心になると思われます。

Julia言語のループが独立した変数のscopeを有していることへの対応

Julia言語のループでは変数のscopeが独立していることは合理的な面もあるが、ループ内で生成した変数をループ外で参照したいときには不便を感じる。ループ内で生成した変数をループ外で参照したいときには、ループに入る前にその変数を定義してループ内で加工する形をとるしかない。どのように定義するとプログラムの変更が少なくて済むかとか、可読性(人それぞれクセがあるので、この点は主観が大きいかもしれない)を考えると、Nothingタイプとするのがよさそうな気がしている。例えば、hogeという変数をループ内で加工した後にまた参照したいときには

hoge = Nothing

とループ外で定義しておいてから、ループ内の作業に持ち込む。これならば、変数hogeの属性が変わっても、いちいち変更しなくてもよい。

2023年1月6日追記

Julia言語のループ内で定義された変数のscopeはループのくり返しレベルで異なるということが発覚した。

"for" creates a new scope for each iteration

なんだそうだ。

discourse.julialang.org

hoge = Nothing

の代わりに、ループの外で

local hoge

と書いてもよい。
というか、こちらの方がむしろ目的とその対処がきちんと対応しているので好ましいと思われる。