Lua 学习笔记
最近不知道发什么神经,突然想起 Lua 来了,没错就是发神经,就是我又不是写脚本,又不是写mod啥的,无端端就想起来这门语言了,所以这次就来写个快速入门的教程吧。这次是 Windows 环境下使用 VSCode 进行编写,Linux 和 Mac 其实也差不多
配置 Lua
首先先把 Lua 的环境配置好
下载 Lua
首先到浏览器中打开 Lua 官网 (https://www.lua.org/)

然后点击 get started

然后点击在 Installing 下面的 LuaDist

然后下载自己需要的版本

然后解压

解压完以后将 bin 配置到环境变量当中,这一步我就不讲了
配置完环境变量后打开 cmd ,如果是 Linux 或者 Mac 就打开 Terminal ,然后输入 lua -v 查看版本信息,检查是否安装成功

也可以输入 lua -i 直接进入控制台

vscode 配置
安装以下插件


编写代码
接下就是快速入门 Lua 的代码编写
hello world
程序员的第一步
1 | print('hello') |
变量
1 | a = 123 |
Lua 的变量默认是全局变量,所以想要用局部变量可以在变量名前加上 local
1 | local a = 123 |
注释
注释用 --
1 | -- 注释 |
数据类型
number
所有的数字都是 number 类型,比如下面的
1 | a = 123 -- 整数 |
布尔
Lua 也有布尔类型
1 | a = true |
在 Lua 中只有 false 和 nil 表示 false 其余都是 true 包括 0
nil
空,没有就是空,虽然是废话
1 | a = nil |
运算
跟其他编程语言差不多
1 | a = 1 + 2 |
下面这些跟其他语言可能不太一样
1 | a = 5 / 2 -- 除尽 |
与或非
Lua 中的与或非跟 Python 类似
1 | a = true and false |
与或非并不是只输出 true 或者 false,还可以输出原本的值,这跟 JavaScript 类似
1 | a = 1 or 2 -- 输出 1 |
字符串
单引号和双引号都表示字符串
1 | a = "hello" |
Lua 也有转义字符,比如
1 | a = "abc\nefg" |
多行文本可以用 [[]] 来表示
1 | a = [[ |
字符串拼接,在 Lua 中是用 .. 来表示
1 | a = "hello" |
字符串和数字键互相转换,可以用 tostring 和 tonumber
1 | a = 123 |
提醒一句如果 tonumber 转换失败的话是会变成 nil 的
1 | a = "abc" |
获取字符串长度可以在前面加上 #
1 | a = "abcdefg" |
控制流程
判断
判断使用 if ... then ... end
1 | a = 1 |
如果否则 if ... then ... else ... end
1 | if a > b then |
多种不同的判断 if ... then ... elseif ... then ... else ... end
1 | if a > b then |
循环
for
for 循环跟 Python 差不多,但不完全一样,它有初值和结束值,比如输出 1 到 9
1 | for i = 1, 9 do |
或者再加上第三个参数,步长,下面是输出 10 以内奇数
1 | for i = 1, 10, 2 do |
while
满足 while 后面的表达式是循环
1 | i = 0 |
repeat … until
满足 until 后面的表达式时停止
1 | i = 0 |
break
退出循环
1 | for i = 1, 9 do |
数组
数组使用 {} 包含
1 | a = {1,2,3,4,5} |
Lua 的数组不仅可以包含同类型还可以包含不同类型
1 | a = {1,'2',{},function() end} |
需要注意的是,Lua 的下标从 1 开始而不是 0
除此以外,还可以通过键值对来存储数组
1 | t = { |
如果要获取数组的长度也同样是同 #
1 | a = {1,'2',{},function() end} |
可以通过下标改变数值
1 | a = {1,2,3,4} |
如果是键值对存储的话可以这样
1 | t['a'] = 2 |
或者这样也是可以访问的
1 | print(t.a) |
也可以用 table.insert 来在尾部插入元素
1 | a = {1,2,3,4} |
按下标进行中间插入
1 | a = {'1','2','4','5'} |
删除元素
1 | a = {'1','2','2','3'} |
函数
声明
函数的声明是用 function ... end 比如
1 | function funcName() |
也可以是这样
1 | funcName = function() |
入参
1 | function funcName(a, b) |
返回
1 | function funcName(a, b) |
调用
1 | function A() |
好了差不多了,更多的用法可以用到再查