跳到主要内容

Lua 脚本语法


临时变

临时变量在使用前,需要在代码中进行声明,即创建该变量。

Lua 中的变量全是全局变量,哪怕是语句块或是函数里,除非用 local 显式声明为局部变量。

示例:
a = 5   -- 声明全局变量 a

local x = 5 -- 声明局部变量 x

数据类型

Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。

数据类型描述
nilnil 类型表示一种没有任何有效值,只有值 nil 属于该类,表示一个无效值(在条件表达式中相当于 false)。
boolean包含两个值:false(假) 和 true(真)。
number表示双精度类型的实浮点数。
string字符串由一对双引号或单引号来表示。
function由 C 或 Lua 编写的函数。
userdata表示任意存储在变量中的 C 数据结构。
thread表示执行的独立线路,用于执行协同程序。
tableLua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是,用来创建一个空表。

注释

在编辑脚本的过程中,会对脚本代码进行一些说明,往往这些说名以字符的方式出现,但 Lua 的语法无法识别它们,我们可以通过注释来解决。

单行注释

两个减号是单行注释,也可以将光标置于需要注释的行中,使用键盘的Ctrl+/快速注释,如下图:

加载失败
示例:
local a = 5;
-- 这里将判断是否大于某值
if a > 5 then
print('success')
end

多行注释

使用--[[]]对多行代码进行包裹实现注释,如下图:

加载失败
示例一:
--[[
des:函数返回两个值的最大值;
param {number} a 参数一,数值类型;
param {number} b 参数二,数值类型;
returns {number} 返回较大的值;
]]
function myFun(a, b)
local result
if a > b then
result = a
else
result = b
end

return result;
end
示例二:
--[=[
function myFun(a, b)
local result
if a > b then
result = a
else
result = b
end

return result;
end
]=]

在多行注释开头加 - 可快速取消多行注释

示例:
---[=[
function myFun(a, b)
local result
if a > b then
result = a
else
result = b
end

return result;
end
]=]

语法检测

编写脚本时,会实时检查语法是否合法,在语法出错行的行号旁将出现图标,鼠标移上去后提示报错内容。多行都出错时,将显示在出错的第一行。解决该行错误后,将显示在出错行的下一行,如下图:

加载失败
示例:
[3:0] 'end' expected near 'en'

表示:第3行的第0个字符的'en'期望输入'end'

代码片段

编写脚本时,编辑器会提供一些关键词、已定义变量、代码片断的提示。点击相应的提示行或移动到相应行使用键盘的TabEnter键,可实现代码补全,如下图:

加载失败

可补全代码的类型

  • keyword:lua 语言的关键词、内置方法名、内置常量、库函数;
  • snippet:lua 语言中常用的代码片断;
  • local:所有已定义过的变量名;

常用代码片段

  • 使用 local 关键词来进行变量的定义。
示例:
local x = 1
  • 使用 if 条件结构体来进行条件判断。
示例:
local a = 5;
if (a > 5) then;
print('success')
end;
  • 使用 for 循环结构体进行语句循环执行。
示例:
for i = 1, 10 do
print(i)
end
  • 使用 function 函数结构体来定义函数。
示例:
function MyFun(a, b)
return a + b
end

print(MyFun(2,3))

标示符

Lua 标示符用于定义一个变量,函数获取其他用户定义的项。标示符以一个字母 AZaz 或下划线 _ 开头后加上 0 个或多个字母,下划线,数字(0 到 9)。

最好不要使用下划线加大写字母的标示符,因为 Lua 的保留字也是这样的。

Lua 不允许使用特殊字符如 @$, 和 % 来定义标示符。 Lua 是一个区分大小写的编程语言。因此在 Lua 中 Runoobrunoob 是两个不同的标示符。以下列出了一些正确的标示符:

mohd zara abc move_name a_123 myname50 _temp j a23b9 retVal


关键词

关键词为系统中已经被定义使用的特殊词或词组,我们在编写脚中的变量或函数的命名应避开他们,以免造成脚本代码冲突,导致执行失败。

系统关键词

以下列出了 Lua 的保留关键词。保留关键字不能作为常量或变量或其他用户自定义标示符:

and break do else elseif end false for function if in local nil not or repeat return then true until while goto


项目关键词

以下列出了我们在对设备变量或内部变量进行读写操作,以及一些特殊函数操作时定义的关键词:

var get set var.get() var.set()

注意

一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION、 _add 等)被保留用于 Lua 内部全局变量。


运算符

运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算。Lua 提供了以下几种运算符类型:


算术运算符

示例:
local a = 10
local b = 20

print(a + b) -- 输出结果为 30

关系运算符

检测两个值是否相等,相等返回 true,否则返回 false。
local a = 10
local b = 20

if a == b then
print('a 等于 b')
else
print('a 不等于 b')
end

逻辑运算符

多个条件同时满足时。
local a = true
local b = false

print(a == true and b == false) -- 返回true

if a == true and b == false then
print('success')
end

其他运算符

连接两个及以上的字符串。
local a = 'Hello '
local b = 'Lua!'

print(a .. b) -- 输出结果为 'Hello Lua!'

快捷键

在脚本编辑器中快捷键操作如下:

快捷方式功能应用快捷方式功能应用
Ctrl + A全选Ctrl + X剪切
Ctrl + C复制Ctrl + V粘贴
Ctrl + Z撤销Ctrl + Y恢复
Ctrl + F查找Ctrl + H查找
Ctrl + /注释
Alt + 向上移动一行Alt + 向下移动一行
Shift + Alt + 向上复制一行Shift + Alt + 向下复制一行

了解更多

点此了解更多 Lua 语法!