一个 变量 是一个持有值的名称。变量的值可以是 数字、字符串、布尔值、数据类型 等等。
命名变量
变量名称可以是任何非保留字的字母、数字和下划线的组合,并且不能以数字开头。
LETTERS -- 有效a1 -- 有效var_name -- 有效_test -- 有效if -- 无效25th -- 无效
变量名称是 区分大小写 的,因此 TestVar 和 TESTVAR 是不同的名称。避免使用下划线和全大写字母命名变量,例如 _VERSION,因为 Luau 可能会将其保留用于内部全局变量。
最佳实践
最佳实践是完整拼写单词。缩写通常使代码更容易编写,但阅读起来更困难。遵循命名变量的常见命名规则可以帮助你和其他人理解它们的含义或目的:
- 对于类和类似枚举的对象使用 PascalCase 命名。
- 对于所有 Roblox API 使用 PascalCase 命名。camelCase API 大多已被弃用。
- 对于局部变量、成员值和 函数 使用 camelCase 命名。
- 对于局部常量(你不期望 改变 值的变量)使用 LOUD_SNAKE_CASE 命名。
- 不要在名称中完全大写缩写。例如,写作 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。有关 Luau 中作用域的更多信息,请参见 Scope。
local nilVarlocal x = 10local word = "Hello"local boolean = trueprint(nilVar) -- nilprint(x) -- 10print(word) -- Helloprint(boolean) -- true
为多个变量赋值
你可以通过用逗号分隔每个变量-值对,在一行中为多个变量赋值。如果变量数量多于值,则 Luau 将额外的变量赋值为 nil。如果值的数量多于变量,则 Luau 不会将额外的值分配给任何变量。
local a, b, c = 1, 2, 3local d, e, f = 4, 5 -- 多余的变量local g, h = 7, 8, 9 -- 多余的值print(a, b, c) -- 1, 2, 3print(d, e, f) -- 4, 5, nilprint(g, h) -- 7, 8
改变值
要改变变量的值,给它赋予另一个值。
local x, y = 10, 20print(x) -- 10print(y) -- 20local x = 1000local y = 2000print(x) -- 1000print(y) -- 2000