2.変数

変数の初期化

最初のあたりで、以下のように、変数を初期化しています。

firstDraw=true
lastX=0
lastY=0

変数の初期化は、変数に値を代入するだけです。とにかく、変数=値と書けばいいのです。 もし、変数の値を途中で変えたいときでも、同じようにするだけです。 また、Luaでは入れる値のタイプが、整数、少数、文字列など、いくつかありますが、特に気にすることはありません。 なぜなら、値のタイプごとに変数を用意しなくても、自動的に変数が適応してくれるからです。

さらに、まとめて代入することができます。lastX, lastY...=x, y...といった書き方をします。 コンマで区切って、ペアで対応するように、順に書いていけばよいです。 ちなみに、変数が初期化されていないときに変数を参照した場合は、nilという値が返って、スクリプトがエラーになることがあります。

-- a=0としない。
-- bが初期化されるときに、いきなりaを参照している。

b=a+1

nilという値は、未定義のままで何もないという意味のようです。とりあえず、変数を空にしたい場合は、a=nilとすればいいはずです。

変数の領域

そして、初期化する領域の違いがあります。グローバルとローカルです。 便宜上、グローバルは、function ()~endの関数ブロック以外のことを指し、ローカルとは、関数ブロック内を指すこととします。 (do, for, if, while...~endrepeat~untilというブロック内でも同じです)

最初の初期化は、グローバル領域で行われていることになります。 グローバル領域で初期化された変数は、基本的にどこでも参照できて、変更可能です。関数内より先に読み込まれるためです。 ローカルの変数の初期化は、localをつけることで可能です。 大抵、グローバルから参照するのはできません。先に初期化が行われていないからです。 この場合、エラーになります。書き方は、以下の通りです。

local a=0

変数の有効範囲

初期化する領域によって、変数の有効範囲に違いがあります。 グローバルは、標準語のように、全体的に有効です。ローカルは、方言のように、一定の領域内のみで有効です。 そのため、変数の用途によって使い分けをします。

Back to Index