Lua关键字
关键字(Keyword)是被赋予特殊含义的标识符,它们用于表示一种数据类型、程序结构、控制流程等。在编程语言中,关键字不能用作变量名、函数名、类名等标识符,以避免与语言本身的语法或内置功能发生冲突。关键字通常全部小写,以确保其在代码中的唯一性和易识别性。以下为lua语言的保留关键字表格:
关键字 | 使用方法 |
---|---|
and | 用于逻辑与操作:if a > 0 and b > 0 then |
break | 退出循环:break |
do | 块的开始:do ... end |
else | 条件语句的否分支:if a > 0 then ... else ... |
elseif | 条件语句的多重分支:if a > 0 then ... elseif b > 0 then ... |
end | 控制结构的结束:if a > 0 then ... end |
false | 布尔值假:local flag = false |
for | 数值型循环:for i = 1, 10 do ... end |
function | 定义函数:function foo() ... end |
goto | 跳转到标签:goto label |
if | 条件语句:if a > 0 then ... end |
in | 用于循环遍历:for i in ipairs(array) do ... |
local | 定义局部变量:local x = 10 |
nil | 无值:local x = nil |
not | 逻辑非操作:if not condition then ... |
or | 用于逻辑或操作:if a > 0 or b > 0 then |
repeat | 重复循环直到条件为真:repeat ... until condition |
return | 从函数返回:return value |
then | 条件语句的一部分:if condition then ... |
true | 布尔值真:local flag = true |
until | 重复循环直到条件为真:repeat ... until condition |
while | 条件循环:while condition do ... end |
操作符
操作符(Operator)是编程语言中用于执行特定操作(如算术运算、逻辑运算、赋值等)的符号。它们作用于一个或多个操作数(Operand),产生新的值或结果。操作符在编程语言中起着至关重要的作用,它们定义了程序的基本运算规则和逻辑结构。Lua作为一种轻量级的脚本语言,支持多种类型的操作符,以满足不同的编程需求。
类别 | 操作符 | 说明 | 使用方法 |
---|---|---|---|
算术操作符 | + | 加法操作符,用于两个数的加法运算 | a + b |
算术操作符 | - | 减法操作符,用于两个数的减法运算;一元操作符,表示数的负值 | a - b 或 -a |
算术操作符 | * | 乘法操作符,用于两个数的乘法运算 | a * b |
算术操作符 | / | 除法操作符,用于两个数的除法运算;结果总是浮点数 | a / b |
算术操作符 | % | 取模操作符,返回两个数相除的余数 | a % b |
算术操作符 | ^ | 指数操作符,用于计算第一个操作数的第二个操作数次幂 | a ^ b |
关系操作符 | < | 小于操作符,比较两个值的大小 | a < b |
关系操作符 | > | 大于操作符,比较两个值的大小 | a > b |
关系操作符 | <= | 小于等于操作符,比较两个值的大小 | a <= b |
关系操作符 | >= | 大于等于操作符,比较两个值的大小 | a >= b |
关系操作符 | == | 等于操作符,用于判断两个值是否相等 | a == b |
关系操作符 | ~= | 不等于操作符,用于判断两个值是否不相等 | a ~= b |
逻辑操作符 | and | 逻辑与操作符,如果两个操作数都为真,则结果为真;否则为假;采用短路求值 | a and b |
逻辑操作符 | or | 逻辑或操作符,如果两个操作数中至少有一个为真,则结果为真;否则为假;采用短路求值 | a or b |
逻辑操作符 | not | 逻辑非操作符,用于取反操作数的布尔值 | not a |
赋值操作符 | = | 基本的赋值操作符,用于将右侧表达式的值赋给左侧的变量 | a = b |
赋值操作符 | += 、-= 等 | 复合赋值操作符,结合了赋值和算术运算 | a += b (相当于a = a + b )、a -= b 等 |
字符串连接 | .. | 用于连接两个字符串,如果其中一个操作数是数字,Lua会将其转换为字符串后再进行连接 | str1 .. str2 |
其他操作符 | # | 长度操作符,用于获取字符串或表的长度 | #str 或#table |
变量
变量用于存储数据,在Lua中主要有三种变量:全局变量、局部变量和表字段变量。变量名可代表全局或局部变量,未声明的则默认为全局。
局部变量在其作用域内有效,全局变量则在整个程序中有效,变量未赋值前,其值为nil。使用方括号可以访问表中的数据,访问全局变量可通过_ENV
表进行,但_ENV
本身非全局。
Lua中的表字段变量(也称为表域)是表(table)这种数据结构中的一个重要组成部分。Lua中的表是一种非常灵活的数据结构,可以看作是一个数组、字典(或哈希表)、集合、记录或是这些结构的任意组合。表字段变量就是表中存储的具体数据项,每个数据项通过唯一的键(key)来访问,这个键可以是数字(作为数组索引)或字符串(作为哈希表的键)。
-- 全局变量
GlobalVar = 200 -- 局部变量
local localVar = 100 -- 表字段变量
local myTable = { name = "Lua", -- 使用字符串作为键,这是一个表字段变量 age = 10, -- 另一个表字段变量 [1] = "元素1", -- 使用数字作为键,这也是表字段变量的一种形式 ["key"] = "值" -- 使用字符串作为键的另一种写法
} print(GlobalVar)
-- print(localVar) 因为localVar是局部变量,这行代码无法正常运行 -- 访问表字段变量
print(myTable.name)
print(myTable["age"])
print(myTable[1])
print(myTable.key)-- 修改表字段变量的值
myTable.name = "修改后的表名"
print(myTable.name)-- 添加新的表字段变量
myTable.newField = "新字段的值"
print(myTable.newField)-- 访问全局变量通过_ENV
print(_ENV.GlobalVar)-- 尝试访问未声明的变量(值为nil)
local undeclaredVar = nilVar
print(undeclaredVar)
代码运行结果如下: