A 変数は、値を保持する名前です。変数の値は、数値、文字列、ブーリアン、データ型などです。
名前の変数
変数名は、数字で始まらない予約されていない文字、数字、アンダースコアの任意の文字列にすることができます。
LETTERS -- 有効
a1 -- 有効
var_name -- 有効
_test -- 有効
if -- 無効
25th -- 無効変数名は大文字と小文字を区別しますので、TestVarとTESTVARは異なる名前です。アンダースコアとすべて大文字の文字で変数名を付けることは避けてください。例えば、_VERSIONのように、Luauが内部のグローバル変数として予約する可能性があります。
ベストプラクティス
単語を完全に綴ることがベストプラクティスです。略語は一般的にコードを書くのを簡単にしますが、読むのを難しくします。変数に名前を付ける際に一般的な命名慣行に従うことで、あなたや他の人がその意味や目的を理解しやすくなります:
- クラスや列挙型のオブジェクトにはPascalCaseの名前を使用します。
- すべてのRoblox APIにはPascalCaseの名前を使用します。camelCaseのAPIはほとんど非推奨です。
- ローカル変数、メンバー値、関数にはcamelCaseの名前を使用します。
- 定数にはLOUD_SNAKE_CASEの名前を使用します。例えば、constの値や、変更されることがないと予想される他の値です。
- 名前の中で全体の略語を大文字にしないでください。例えば、aJsonVariableやMakeHttpCallと書きます。
予約された名前
Luauは以下のキーワードを予約しているため、これらを変数や関数の名前に使用することはできません:
- and
- for
- or
- break
- function
- repeat
- do
- if
- return
- else
- in
- then
- elseif
- local
- true
- end
- nil
- until
- false
- not
- while
値の割り当て
変数を作成し、値を割り当てるには、=演算子を使用します。=の左側に変数を置き、右側に値を置きます。値を指定しない場合、値はnilになります。
変数にはグローバルまたはローカルのスコープがあります。デフォルトではグローバルスコープですが、Luauはローカル変数にアクセスする方が速いため、ローカルスコープで作成する方がほとんどの場合は良いです。変数にローカルスコープを与えるには、値を割り当てるときに変数名の前にlocalキーワードを置きます。ローカルスコープを与え、再割り当てを防ぐには、localの代わりにconstを使用します。詳細については、スコープを参照してください。
local nilVar
local x = 10
local word = "Hello"
local boolean = true
print(nilVar) -- nil
print(x) -- 10
print(word) -- Hello
print(boolean) -- true複数の変数に値を割り当てる
カンマで区切って各変数-値ペアを1行で割り当てることができます。変数の数が値の数より多い場合、Luauは余分な変数にnilを割り当てます。値の数が変数の数より多い場合、Luauは余分な値をどの変数にも割り当てません。
local a, b, c = 1, 2, 3
local d, e, f = 4, 5 -- 余分な変数
local g, h = 7, 8, 9 -- 余分な値
print(a, b, c) -- 1, 2, 3
print(d, e, f) -- 4, 5, nil
print(g, h) -- 7, 8値の変更
変数の値を変更するには、別の値を割り当てます。
local x, y = 10, 20
print(x) -- 10
print(y) -- 20
x = 1000
y = 2000
print(x) -- 1000
print(y) -- 2000定数変数
再割り当てできない変数を作成するには、localの代わりにconstを使用します。const変数を再割り当てしようとするとエラーが発生します。これは、複合代入演算子のような+=を通じても同様です。
const MAX_HEALTH = 100
MAX_HEALTH = 50 -- エラー: const変数を再割り当てできません
MAX_HEALTH += 1 -- エラー: const変数を再割り当てできませんlocalと同様に、constはtype annotationを受け入れます。例えば、const MAX_HEALTH: number = 100のように。
関数をconstで宣言することもでき、これにより関数の名前を再割り当てできなくなります。
const function addOneAndTwo()
local result = 1 + 2
print(result)
end
addOneAndTwo = nil -- エラー: const変数を再割り当てできませんconstは変数自体を不変にしますが、保持している値は不変にはなりません。const変数がテーブルを保持している場合、そのテーブルの内容を変更することはできます。内容も不変にするには、table.freeze()を使用します。
const SETTINGS = { volume = 0 }
SETTINGS.volume = 1 -- ok, テーブル内の値を変更
SETTINGS = {} -- エラー: const変数を再割り当てできません予約された名前のキーワードとは異なり、constは文脈依存です。Luauはlocalが有効な場所でのみキーワードとして扱うため、constを変数名として使用している既存のコードはそのまま動作します。
local const = 1
print(const) -- 1
const = 2 -- ok, ここでは`const`は変数名詳細情報やエッジケースについては、Luauドキュメントを参照してください。