01-Lua语言入门
Lua是一门简明、可扩展、可移植且高效的脚本语言,最初由巴西的里约热内卢天主教大学的一个团队开发。Lua语言的设计目标是为了嵌入到应用程序中,提供灵活的扩展能力。Lua具有简单的语法、动态类型、自动内存管理和高性能等特点,使其在游戏开发、嵌入式系统和脚本编程等领域得到广泛应用。
02-数值类型
在Lua5.3以前,所有数值都以双精度浮点格式表示。从Lua5.3开始,Lua为 数值格式(number) 提供了两种选择:
03-字符串
Lua语言中的字符串可以表示一或多个字符,它由一串字节组成,每个字符使用8个位存储。字符串可以存储包括空字符在内的所有数值代码,也就是说可以在字符串中存储任意的二进制数据。此外,从Lua5.3开始提供处理UTF-8编码的函数库。
04-表
表(Table)是Lua语言中唯一的数据结构,Lua可以通过表实现各种常用的数据结构(例如,数组,集合等)。Lua也使用表来表示包(Package)和其他对象,例如在调用math.sin()函数时,实际上是以字符串"sin"为键检索表math。
05-函数
函数(Function)是对语句和表达式进行抽象的主要方式。在Lua语言中,函数是严格遵循词法定界(Lexical Scoping)的第一类值(first-class value)。其中:
06-输入输出
本文目前暂未重制,观感可能不佳,待我有时间重学到这块了再改。
07-日期和时间
Lua语言的标准库提供了两个用于操作日期和时间的函数:os.time()和os.date()。
08-模块与包
将所有代码都写进一个文件里会显得十分臃肿,因此需要将不同职能的代码分成各种模块(Module)写到不同的文件中,然后使用Lua语言提供的require()函数读取这些模块,让包(Package)管理这些模块。
09-元表
在Lua语言中,元表(Metatable)定义拥有它的实例的行为。例如,平常无法计算两个表相加,可以通过定义元表内的元方法(Metafunction)字段add告诉Lua如何计算这两个表的加法。Lua语言中的每一个值都可以有元表:对于表和用户数据(userdata)类型的值,可以拥有各自独立的元表;对于其他类型的值(如字符串)则共享类型所属的同一个元表。
10-面向对象编程
在之前的表章节中提到,Lua语言中的一张表就是一个对象,可以用表实现OOP。
11-环境
全局变量与_G表
12-协程
协程和线程类似,协程是一系列的可执行语句,拥有自己的栈、局部变量和指令指针,同时协程又与其他协程共享了全局变量和其他几乎一切资源;线程与协程的区别在于,一个多线程程序可以并行运行多个线程,而协程需要彼此协作运行,即在任意指定的时刻只能有一个协程运行,且只有当正在运行的协程显式要求被挂起时其执行才会暂停。
13-垃圾回收
Lua语言通过垃圾收集(Garbage Collection,后文简称GC)自动删除成为垃圾的对象,把程序员从手动内存管理的大坑中解放出来。在某些对性能要求极其苛刻的场合中可能需要程序员去手动控制垃圾收集器,因此还是要对Lua的GC机制有一定的了解。