Skip to content

ZhiZe-ZG/TXLuaLesson

Repository files navigation

TXLuaLesson

TaiXuan's Programming Language Lua Lesson

太玄的Lua编程语言课。

Introduction

This is a series of articles and related videos that I have completed on and off over a long period of time. Its main content is a basic tutorial on Lua. This project is now complete. I have no plans to expand this tutorial for now.

这是我在较长一段时间内断断续续完成的一系列文章以及相关视频。其主要内容是 Lua 的基础教程。现在这一项目已经完成。我目前没有继续拓展这一教程的计划。

This document uses Mermaid syntax to describe the relationships between lessons. Therefore please view this document using a Markdown editor that supports Mermaid rendering.

该文档使用 Mermaid 语法描述了课程之间的关系。因此请使用支持 Mermaid 渲染的 Markdown 编辑器查看本文档。

The project's video files are in the Videos folder. I used Git LFS to manage these video files. When cloning the repository, be sure to use the Git LFS command to download the video (please refer to https://git-lfs.com/).

该项目的视频文件早 Videos 文件夹中。我使用了 Git LFS 来管理这些视频文件。在克隆该仓库的时候注意使用 Git LFS 命令下载视频(请参考https://git-lfs.com/)。

Table of Content

图例:

graph TD
    C01[课程节点1]
    C02[课程节点2]
    C03[课程节点3]
    C04[课程节点4]
    C05[课程节点5]

    C01-->C02
    C02-->C03
    C02-->C04
    C03-->C05
    C04-->C05
Loading

节点间的连线表示学习顺序关系。当一个课程节点有多个指向它的箭头时,需要把每一个箭头出发点都学完再学习它。当一个课程节点发出多个箭头时,选择一个自己感兴趣的优先学习即可。

此外,在 Videos 文件夹中有部分课程中提到的例子的视频演示。这些视频使用 Git LFS 上传,因此克隆仓库时请注意使用 Git LFS。

Stage0 前言

graph TD
    C00[0X00 编程前的硬件准备]
    C4F[0X4F 安装和运行 Lua]
    C50[0X50 常用 Lua 概念]
    S1[Stage1 入门]

    C00-->C4F
    C4F-->C50
    C50-->S1
Loading

Stage1 入门

graph TD
    S0[Stage0 前言]
    S2[Stage2 基础]
    C01[0X01 简介]
    C02[0X02 Hello Lua!]
    C03[0X03 虚拟机程序]
    C04[0X04 环境搭建(Arch Linux)]
    C05[0X05 环境搭建(Windows)]
    C06[0X06 就像计算器]
    C07[0X07 小学算数]
    C08[0X08 变量]
    C09[0X09 分步算术]
    C0A[0X0A 按位运算]

    S0-->C01
    C01-->C02
    C02-->C03
    C03-->C04
    C03-->C05
    C04-->C06
    C05-->C06
    C06-->C07
    C07-->C08
    C08-->C09
    C08-->C0A
    C09-->S2
Loading

Stage2 基础

graph TD
    S1[Stage1 入门]
    S3[Stage3 字符串处理]
    S4[Stage4 理解函数]
    S5[Stage5 表结构]
    S6[Stage6 流程控制]
    C0B[0X0B 函数调用]
    C0C[0X0C 函数定义]
    C0D[0X0D 数学库函数]
    C0E[0X0E 中学算术]
    C0F[0X0F 比较数值]
    C10[0X10 逻辑运算]
    C11[0X11 更复杂的函数]
    C12[0X12 字符串]
    C13[0X13 变量与值]
    C15[0X15 类型转换]

    S1-->C0B
    C0B-->C0C
    C0B-->C0D
    C0D-->C0E
    S1-->C0F
    C0F-->C10
    C0C-->C11
    C0B-->C12
    C10-->C13
    C11-->C13
    C12-->C13
    C10-->S6
    C11-->S6
    C13-->C15
    C15-->S3
    C15-->S4
    C15-->S5
Loading

Stage3 字符串处理

graph TD
    S2[Stage2 基础]
    S7[Stage7 模块]
    C16[0X16 字符串处理]
    C1A[0X1A 转义字符]
    C1B[0X1B 写剧本]
    C1F[0X1F 读写终端]
    C20[0X20 自定义计算器]
    C21[0X21 格式化输出]
    C22[0X22 更多格式]
    C2A[0X2A 支持UTF8]

    S2-->C16
    C16-->C1A
    C1A-->C1B
    C1B-->C1F
    C1F-->C20
    C20-->C21
    C21-->C22
    C22-->C2A
    C2A-->S7
Loading

Stage4 理解函数

graph TD
    S2[Stage2 基础]
    S5[Stage5 表结构]
    S7[Stage7 模块]
    C17[0X17 函数为值]
    C1C[0X1C 变量增删]
    C1D[0X1D 变量作用域]
    C1E[0X1E 闭包]
    C23[0X23 计数工具]
    C2F[0X2F 函数和表]

    S2-->C17
    C17-->C1C
    C1C-->C1D
    C1D-->C1E
    C1E-->C23
    C23-->C2F
    S5-->C2F
    C2F-->S7
Loading

Stage5 表结构

graph TD
    S2[Stage2 基础]
    S4[Stage4 理解函数]
    S6[Stage6 流程控制]
    C18[0X18 简单的表]
    C24[0X24 词典]
    C25[0X25 表嵌套]
    C2C[0X2C 表的遍历]
    C2D[0X2D 对表操作]
    C2E[0X2E 更多对表操作]
    C33[0X33 迭代器]

    S2-->C18
    C18-->C24
    C24-->C25
    C25-->C2C
    S6-->C2C
    C2C-->C2D
    C2C-->C33
    C2D-->C2E
    C2E-->S4
Loading

Stage6 流程控制

graph TD
    S2[Stage2 基础]
    S5[Stage5 表结构]
    C14[0X14 选择结构]
    C19[0X19 分段函数]
    C26[0X26 条件表达式]
    C27[0X27 跳转语句]
    C28[0X28 循环语句]
    C29[0X29 再谈循环]
    C2B[0X2B 循环for]

    S2-->C14
    C14-->C19
    C19-->C26
    C26-->C27
    C26-->C28
    C28-->C29
    C29-->C2B
    C2B-->S5
Loading

Stage7 模块

graph TD
    S3[Stage3 字符串处理]
    S4[Stage4 理解函数]
    S8[Stage8 正则表达式]
    S9[Stage9 虚拟机和文件]
    C30[0X30 模块调用]
    C31[0X31 模块编写]
    C32[0X32 模块搜寻]
    C34[0X34 获取系统时间]
    C35[0X35 随机数]
    C36[0X36 度量时间]
    C3D[0X3D 字符串压缩]

    S3-->C30
    S4-->C30
    C30-->C31
    C31-->C32
    C32-->C34
    C32-->C35
    C32-->C3D
    C32-->S8
    C32-->S9
    C34-->C36
Loading

Stage8 正则表达式

graph TD
    S7[Stage7 模块]
    C37[0X37 搜寻字符串]
    C38[0X38 字符类]
    C39[0X39 长度匹配]
    C3A[0X3A 捕获和其他]

    S7-->C37
    C37-->C38
    C38-->C39
    C39-->C3A
Loading

Stage9 虚拟机和文件

graph TD
    S7[Stage7 模块]
    SA[StageA 元表]
    SB[StageB 异常处理]
    SC[StageC 线程]
    C3B[0X3B 命令行参数]
    C3C[0X3C 系统工具函数]
    C3E[0X3E 简单输入输出流]
    C3F[0X3F 文件模型]
    C40[0X40 读取文件]
    C41[0X41 动态脚本]

    S7-->C3B
    C3B-->C3C
    C3C-->C3E
    C3E-->C3F
    C3F-->C40
    C40-->C41
    C41-->SA
    C41-->SB
    C41-->SC
Loading

StageA 元表

graph TD
    S9[Stage9 虚拟机和文件]
    SD[StageD 调试]
    C42[0X42 重载运算]
    C43[0X43 更多重载]
    C44[0X44 垃圾回收]

    S9-->C42
    C42-->C43
    C43-->C44
    C44-->SD
Loading

StageB 异常处理

graph TD
    S9[Stage9 虚拟机和文件]
    SD[StageD 调试]
    C45[0X45 错误处理]
    C46[0X46 异常处理]

    S9-->C45
    C45-->C46
    C46-->SD
Loading

StageC 线程

graph TD
    S9[Stage9 虚拟机和文件]
    SD[StageD 调试]
    C47[0X47 同时执行]
    C48[0X48 线程调度]

    S9-->C47
    C47-->C48
    C48-->SD
Loading

StageD 调试

graph TD
    SA[StageA 元表]
    SB[StageB 异常处理]
    SC[StageC 线程]
    SE[StageE 与C交互]
    C49[0X49 调试]
    C4A[0X4A Hooks]

    SA-->C49
    SB-->C49
    SC-->C49
    C49-->C4A
    C4A-->SE
Loading

StageE 与C交互

graph TD
    SD[StageD 调试]
    C4B[0X4B 与C交互]
    C4C[0X4C 从C调用Lua(1)]
    C4D[0X4D 从C调用Lua(2)]
    C4E[0X4E 从Lua调用C]

    SD-->C4B
    C4B-->C4C
    C4C-->C4D
    C4D-->C4E
Loading

Update Record

2024.05.11

  • 重新审视该项目并做出一些整理,取消了过于宏大的后续计划。由于Lua教程部分已经比较完整,在完成一些基本的整理工作之后,完结该项目。

2019.03.22

  • 计划增加有关于C和Linux的有关内容。修改文件目录结构,增加C相关的计划。

2018.08.08

  • 完成了写作和视频。

2018.4.2

  • 完成了最后的Lua C API章节。本教程至此告一段落。

2018.3.7

  • 重新确立了文件的保存备份和分享办法。具体措施如下:
    • 所有文本性内容(包括SVG等文本描述的图片文件)保存备份于Github。
    • 除了文本性内容以外的内容将会依照原有的目录格式备份于百度云盘。这部分文件也可以用于分享下载。
    • 所有文本性和非文本性的内容整体打包保存于坚果云。(等我弄清楚怎么用坚果云分享,我也会把这一部分链接分享。)
    • 视频类内容和文章还会在bilibili发表。

2018.1.3

  • 移除了所有的视频文件和除svg以外的图片文件.因为git并不适合作为备份工具,github也不适合作为通用云盘.以后在github仓库中将仅仅存放纯文本或者仅基于纯文本的文件.
  • 更新了一些内部图片链接.
  • 新增章节0X49和0X4A.新增阶段StageD.
  • 更新了0X01中的学习资料索引.

About

TaiXuan's Programming Language Lua Lesson

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published