一个 变量 是一个持有值的名称。变量值可以是 数字、字符串、布尔值、数据类型 等等。
命名变量
变量名称可以是任何非保留的字母、数字和下划线的字符串,且不能以数字开头。
LETTERS -- 有效
a1 -- 有效
var_name -- 有效
_test -- 有效
if -- 无效
25th -- 无效变量名称是 区分大小写 的,因此 TestVar 和 TESTVAR 是不同的名称。避免使用下划线和全大写字母命名变量,例如 _VERSION,因为 Luau 可能会将其保留为内部全局变量。
最佳实践
最佳实践是完整拼写单词。缩写通常使代码更容易编写,但更难阅读。遵循常见的命名惯例可以帮助你和其他人理解变量的含义或目的:
- 对于类和枚举类对象,使用 PascalCase 命名。
- 对于所有 Roblox API,使用 PascalCase 命名。camelCase API 大多已被弃用。
- 对于局部变量、成员值和 函数,使用 camelCase 命名。
- 不要在名称中全大写缩略词。例如,写 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。要给它局部作用域并防止重新赋值,使用 const 而不是 local。有关更多信息,请参见 作用域。
local nilVar
local x = 10
local word = "Hello"
local boolean = true
print(nilVar) -- nil
print(x) -- 10
print(word) -- Hello
print(boolean) -- true为多个变量赋值
你可以通过用逗号分隔每个变量-值对,在一行中为多个变量赋值。如果变量比值多,则 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常量变量
要创建一个不能重新赋值的变量,使用 const 而不是 local。尝试重新赋值 const 变量会导致错误,包括通过 复合赋值运算符 例如 +=。
const MAX_HEALTH = 100
MAX_HEALTH = 50 -- 错误:无法重新赋值常量变量
MAX_HEALTH += 1 -- 错误:无法重新赋值常量变量与 local 一样,const 接受 类型注解,例如 const MAX_HEALTH: number = 100。
你还可以用 const 声明一个函数,这样可以防止重新赋值函数的名称。
const function addOneAndTwo()
local result = 1 + 2
print(result)
end
addOneAndTwo = nil -- 错误:无法重新赋值常量变量const 使变量本身不可变,而不是它所持有的值。如果一个 const 变量持有一个 表,你仍然可以更改表的内容。要使内容也不可变,使用 table.freeze()。
const SETTINGS = { volume = 0 }
SETTINGS.volume = 1 -- 可以,改变表内的值
SETTINGS = {} -- 错误:无法重新赋值常量变量与 保留名称 中的关键字不同,const 是上下文相关的。Luau 仅在 local 有效的地方将其视为关键字,因此使用 const 作为变量名称的现有代码仍然有效。
local const = 1
print(const) -- 1
const = 2 -- 可以,`const` 在这里是一个变量名称有关更多信息和边缘情况,请参见 Luau 文档。