ローカル変数を使う理由?
CoddyのLuaジャーニー「基礎」セクションの一部。レッスン 85/90。
名前の衝突を防ぐ:ローカル変数の最も重要な利点は、同じ名前の別の変数を誤って上書きするのを防げることです。プログラム全体でグローバル変数を使うと、変数名を誤って使い回し、変更するつもりのなかった値を変更してしまいがちです。
score = 100 -- プレイヤーのスコア
function countEnemies()
score = 0 -- この関数内だけで使うカウンターのつもり
for i = 1, 3 do
score = score + 1
end
return score
end
countEnemies()
print(score) -- 3: プレイヤーのスコアが上書きされてしまった!この関数は独自のカウンターを使うはずでしたが、scoreがグローバル変数であるため、代わりにプレイヤーのスコアを変更してしまいました。localを追加すると、この関数の中だけで有効な別の変数を作れます。
function countEnemies()
local score = 0 -- 新しい変数で、この関数内でのみ使用される
for i = 1, 3 do
score = score + 1
end
return score
end
countEnemies()
print(score) -- 100: グローバル変数 score は変更されていないローカル変数を使うと、各関数やブロックがそれぞれ独立した変数を持つため、ある場所のコードが別の場所で使われている値を誤って変更することはありません。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Luaオンラインコンパイラ