- 2021.3.8 ,先看一下runoob简易入门教程 https://www.runoob.com/lua/lua-tutorial.html
- 官网原文档(目前最新是5.4版本),有空再看 http://www.lua.org/manual/5.4/
目录
- Lua简介
- Lua语法
- 基础语法
- 数据类型
- Lua变量
Lua简介
- Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
- Lua特性: 轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C )提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。 其它特性:支持面向过程(procedure-oriented)编程和函数式编程(functional programming);自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。
Lua语法
基础语法
- 经典第一题,注意没有分号:print(“Hello World!”)
- 关键词
- 创建变量默认全局变量,删除创建变量只需要,变量名=nil即可。
- Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符
- 变量区分大小写
数据类型
nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 |
---|---|
boolean | 包含两个值:false和true。 |
number | 表示双精度类型的实浮点数 |
string | 字符串由一对双引号或单引号来表示 |
function | 由 C 或 Lua 编写的函数 |
userdata | 表示任意存储在变量中的C数据结构 |
thread | 表示执行的独立线路,用于执行协同程序 |
table | Lua 中的表(table)其实是一个”关联数组”(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过”构造表达式”来完成,最简单构造表达式是{},用来创建一个空表。 |
- boolean和if语句: if语句必须要以end作为结尾,结构为
if b == 0 then
xxxx
else
xxxx
end
&& = and
|| = or
! = not
- lua中默认只有一种number数字类型,几乎所有的数字都属于number类型。
- 字符串有两种方式:
1、字符串形式
string = "xxxxx"
string = [[ xxxx
xxxxx
xxxxx
]]
2、对于字符串进行数学运算时会尝试把字符串类型转换为数字类型
> print("2" 6)
8.0
> print("2" "6")
8.0
> print("2 6")
2 6
> print("-2e2" * "6")
-1200.0
3、使用 # 来计算字符串的长度
> len = "www.runoob.com"
> print(#len)
14
> print(#"www.runoob.com")
14
- 有关表(table)的操作
1、创建表
local tbl2 = {"apple", "pear", "orange", "grape"}
2、table是关联数组(下标从1开始),table长度可随时根据增加内容变化,索引建立:
a = {}
a["key"] = "value"
key = 10
a[key] = 22
a[key] = a[key] 11
for k, v in pairs(a) do
print(k .. " : " .. v)
end
结果:
key : value
10 : 33
- function函数,作为第一类值使用
function factorial1(n)
if n == 0 then
return 1
else
return n * factorial1(n - 1)
end
end
print(factorial1(5))
factorial2 = factorial1
print(factorial2(5))
- 线程,协程的概念:https://blog.csdn.net/u010487568/article/details/56841031/
- thread线程:在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
Lua变量
- 变量申明类型:全局变量、局部变量(local)、表中的域。局部变量的作用域为从声明位置开始到所在语句块结束。