菜狗教程 —— Lua 篇 01
Hello World
官方网站:www.lua.org/start.html
装置完成后,运用lua或许lua -i进入交互式编程形式,或许运用lua <file_name>履行脚本文件。
变量
Lua 是动态类型语言,变量没有固定类型。变量默许是大局的,部分变量需要运用关键字local显式声明。
变量有8种类型:
- nil
- boolean
- number
- string
- function
- userdata
- thread
- table
能够运用 type() 函数输出任何变量的类型,输出的类型为 string,内容是上面8种之中的一个。
nil 表明没有任何值,也就是「空」。所有变量在未赋值之前都是 nil,将 nil 赋值给变量相当于删去。nil 能够用来判别是否持平(nil==nil = true),也能够将 nil 用作判别条件,此时相当于 false。
boolean 只要 true 和 false。Lua 中只要 nil 和 false 为假,其他都是真(包含数字 0)。
number 类型用于表明所有的数字,约等于 double。
string 能够用双引号或单引号表明,类似 python。也能够用[[]]包起来以不需转义的方法保存内部格局,相当于 Kotlin 的三引号。
string 类型能够直接进行数学运算,但如果内容无法转换成 number,就会报错。
string 拼接运用 .. 运算符,# 加 string 能够获得 string 的长度。更多 string 操作后边再独自说。
table 是 Lua 唯一的集合,运用 {} 创建。用法非常灵活,能够当成 Array 或许 Map 运用,也能够有更奇特的用法(比方模仿继承和多态等面向对象编程的才能)。
table 不指定 key 的时候相当于 Array,可是主动生成的 index 是从 1 开始的。指定 key 的时候相当于 Map。
table 索引能够用 [],将对应 index 或许 key 的 value 赋值成 nil 表明删去。
function 在 Lua 中能够当做变量运用。其他关于 function 的内容独自打开写。
thread 在 Lua 中实际上是一种协程,详情后边打开。
userdata 表明一种自界说数据,通常来源于脚本外部(比方 C++ 的一个指针),能够依照一定方法运用。
运算符
Lua 的大部分运算符是常规的管用运算符,就有几个是需要特别注意一下的:
| 运算符 | 功用 |
|---|---|
| ~= | 不等于 |
| # | 取 string 或 table 的长度 |
| and | 逻辑与 |
| or | 逻辑或 |
| not | 逻辑非 |
流程操控
分支:
- if – then – else – end
循环:
- while – do – end
- repeat – until
- for i=exp1,exp2,exp3 – do – end
- for k,v in pairs(table) – do – end
Lua 不运用花括号划定作用域,注意不要遗失 then、do 和 end。
pairs 是一个内置函数,能够为 table 供给一个迭代器。
函数
function 也是变量,遵循默许大局,加 local 变部分的规则。
function 的规模从关键字 function 开始,到 end 结束,同样不需要花括号。
Lua 中 function 能够接收恣意数量参数,回来恣意数量的值。参数列表随函数一起界说,回来值则不需要在界说中声明。参数列表也能够运用 ... 表明可变长度。
字符串
string 的基本用法在变量中现已提到过,但字符串处理是比较常用的内容,这儿弥补一些 string 的内置函数。
Lua 供给了一些内置函数来处理 string:
| 函数名 | 功用 |
|---|---|
| string.upper(arg) | 变大写字母 |
| string.lower(arg) | 变小写字母 |
| string.gsub(inputStr, findStr, replaceStr, [replaceCount]) | 找到并替换(指定次数) |
| string.find(inputStr, findStr, [init, [end]]) | 找打并回来位置,两个回来值分别是 start end |
| string.reverse(arg) | 反转字符串 |
| string.format(…) | 格局化输出(类似 printf) |
| string.char(args) | ASCII 数字转字符串 |
| string.byte(inputStr, [index]) | 指定字符转 ASCII |
| string.len(arg) | 计算字符串长度 |
| string.rep(arg) | 重复字符串 |
简单举几个比如,交互式编程形式也能记住之前界说的变量,很推荐初学者(指我自己)随便试试。
调试 Lua
Lua 中的注释运用 -- 标识,多行注释是结合 -- 和保存字符串格局的 [[]] 。
Lua 是用 print 函数输出日志,debug 库供给了一些才能以便更好的输出运行时信息。





