犬も歩けばエンジニアになる

プログラミングや数学や物理に関する技術メモ

Julia - グローバル変数とローカル変数

Global変数とLocal変数

変数にはglobal変数とlocal変数の2種類があります。 Juliaは動的型付け言語のため、基本的に変数の型は宣言しません。

ループや関数のスコープ内で宣言された変数は自動的にglobal変数となり、スコープ内で宣言されるとlocalとなります。 スコープ外からlocal変数にアクセスすることはできません。

x = 1 #これはglobal変数
for i = 1:10
    y = 2 #これはlocal変数
end
println(x)    #これはOK。1が出力される。
println(y) #これはエラー。forループ外では変数yが定義されてないため

スコープ内からglobal変数にアクセスするには、globalキーワードが必須となります。 globalキーワードをつけないとglobal変数にアクセスできません。

x = 1 #global変数
y = 2 #global変数
for i = 1:10
   println(x) #エラー。local変数xが定義されていないため。
   println(global x) #globalキーワードをつけるとアクセスできる。出力は1

   y = 3 #local変数yの宣言。global変数yとは別物
   println(y) #globalキーワードがないのでlocal変数のyを出力。よって3
end
println(y) #これはglobal変数のyを出力。よって2

データ型

Juliaではループや関数のスコープ内でのみ変数の型を指定することができます。

a::Int = 8 #エラー。スコープ外では型指定できない。
for i = 1:10
    b::Int = 5 #Int型
    c::Float64 = 2.2 #浮動小数点型はFloat64
    s::String = "asdf" #文字列型はString
end