You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.8 KiB

  • 使用 Lua 脚本

    • 轻量级: Lua用标准C语言编写并以源代码形式开发编译后仅仅一百余千字节可以很方便的嵌入到其他程序中。
    • 可扩展: Lua提供非常丰富易于使用的扩展接口和机制由宿主语言(通常是C或C++)提供功能Lua可以使用它们就像内置的功能一样。
    • 支持面向过程编程和函数式编程
  • 应用场景

    • 游戏开发、独立应用脚本、web应用脚本、扩展和数据库插件、系统安全上。
  • 安装

# 下载 gz 安装包
wget https://www.lua.org/ftp/lua-5.4.1.tar.gz

# 安装需要的依赖
yum install -y readline-devel

# 编译安装
cd lua-5.4.1
make linux test
make install

# 验证安装
lua -v
  • Lua的语法
    • Lua交互式编程模式可以通过命令lua -i 或lua来启用:
    • 脚本文件以 .lua 结尾
  • 举例:
#!/usr/local/bin/lua
print("Hello World!!!")
  • 第一行用来指定Lua解释器所在位置为 /usr/local/bin/lua加上#号标记解释器会忽略它。
  • 一般情况下#!就是用来指定用哪个程序来运行本文件。但是hello.lua并不是一个可执行文件需要通过chmod来设置可执行权限最简单的方式为:
chmod 755 hello.lua
  • 然后执行该文件
./hello.lua
  • 补充一点如果想在交互式中运行脚本式的hello.lua中的内容我们可以使用一个dofile函数
dofile("lua_demo/hello.lua")
  • 注意:在Lua语言中连续语句之间的分隔符并不是必须的也就是说后面不需要加分号当然加上也不会报错
  • 在Lua语言中表达式之间的换行也起不到任何作用。如以下四个写法其实都是等效的
写法一
a=1
b=a+2
写法二
a=1;
b=a+2;
写法三
a=1; b=a+2;
写法四
a=1 b=a+2
  • 不建议使用第四种方式,可读性太差。

1.1 Lua的注释

  • 关于Lua的注释要分两种第一种是单行注释第二种是多行注释。
  • 单行注释
--注释内容
  • 多行注释
--[[
	注释内容
	注释内容
--]]
  • 取消多行注释,只需要在第一个--之前在加一个-即可,如:
---[[
	注释内容
	注释内容
--]]

1.2 标识符

  • 换句话说标识符就是我们的变量名Lua定义变量名以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母下划线数字0到9
  • 这块建议大家最好不要使用下划线加大写字母的标识符因为Lua的保留字也是这样定义的容易发生冲突。注意Lua是区分大小写字母的。

1.3 关键字

  • 下列是Lua的关键字大家在定义常量、变量或其他用户自定义标识符都要避免使用以下这些关键字
关键词 关键词
and break
elseif end
function if
nil not
return then
while goto
do else
false for
in local
or repeat
true until
  • 一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION被保留用于 Lua 内部全局变量。这个也是上面我们不建议这么定义标识符的原因。

1.3 运算符

+   加法
-	减法
*	乘法
/	除法
%	取余
^	乘幂
- 负号

10+20	-->30
20-10	-->10
10*20	-->200
20/10	-->2
3%2		-->1
10^2	-->100
-10		-->-10

  • 关系运算符
==	等于
~=	不等于
>	大于
<	小于
>=	大于等于
<=	小于等于
 
  • 例如:
10==10		-->true
10~=10		-->false
20>10		-->true
20<10		-->false
20>=10		-->true
20<=10		-->false
  • 逻辑运算符
and	逻辑与	 A and B     &&   
or	逻辑或	 A or B     ||
not	逻辑非  取反如果为true,则返回false  !
  • 逻辑运算符可以作为if的判断条件返回的结果如下:
A = true
B = true

A and B	-->true
A or  B -->true
not A 	-->false

A = true
B = false

A and B	-->false
A or  B -->true
not A 	-->false

A = false
B = true

A and B	-->false
A or  B -->true
not A 	-->true
  • 其他运算符
..	连接两个字符串
#	一元预算法,返回字符串或表的长度
  • 例如:
> "HELLO ".."WORLD"		-->HELLO WORLD
> #"HELLO"			-->5

1.4 全局变量&局部变量

  • 在Lua语言中全局变量无须声明即可使用。在默认情况下变量总是认为是全局的如果未提前赋值默认为nil:
  • 要想声明一个局部变量需要使用local来声明