Skip to content

Commit 940e67e

Browse files
committed
增加注释
1 parent f45610b commit 940e67e

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

docs/lua/reference.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,34 @@ Lua是开源免费软件,遵循Lua许可证(MIT许可证)发布。手册中描
1616

1717
## 2. 基本概念
1818

19+
本章节介绍Lua语言的基本概念。
20+
1921
### 2.1 值和类型
2022

23+
Lua是一种动态类型语言。这意味着变量没有类型;只有值才有类型。该语言没有类型定义。所有值都有自己的类型。
24+
25+
Lua中的所有值都是第一类型值。这意味着所有值都可以存储在变量中、作为参数才传递给其他函数,以及作为结果返回。
26+
27+
Lua中有8种基本类型:`nil``boolean``number``string``function``userdata``thread``table`。类型`nil`具有一个单一值`nil`,其主要特性是不同于任何其他值;它通常代表无效值。`boolean`类型有2个值:`true``false``nil``false`会导致条件为假;他们统称为假``。其他值都为``。虽然名称如此,在Lua中条件``经常用于`nil`的判定,其主要区别在于`false`表现得像表中的常规值,而`nil`表示缺失的值。
28+
29+
`number`类型既表示整数,又表示实数(浮点数),使用两种子类型:`integer``float`。标准Lua实现使用64位整数和双精度(64位)浮点数,但也可以编译Lua使用32位整数和单精度(32位)浮点数。对于小型机器和嵌入式系统来说,32位整数和单精度浮点数是更合适的。(可以参考luaconf.h中的宏 LUA_32BITS 。)
30+
31+
除非特别说明,否则,根据二进制补码算数的通常规则,操作整数值时的任何溢出都会回绕。(换句话说,实际结果是唯一可表示的整数,它与数学结果模 2n 相等,其中 n 是整数类型的位数。)
32+
33+
Lua 对于何时使用每种子类型有明确的规则,但它也会根据需要自动在它们之间进行转换(参见 §3.4.3)。因此,程序员可以选择忽略整数和浮点数之间的差异,或者完全控制每个数字的表示。
34+
35+
类型字符串表示不可变的字节序列。Lua 是 8 位字符:字符串可以包含任何 8 位值,包括嵌入的零('\0')。Lua 也是与编码无关的;它对字符串的内容不做任何假设。Lua 中任何字符串的长度都必须符合 Lua 整数的长度。
36+
37+
Lua 可以调用(并操作)用 Lua 编写的函数和用 C 编写的函数(参见 §3.4.10)。两者都用 function 类型表示。
38+
39+
提供 `userdata` 类型以允许将任意 C 数据存储在 Lua 变量中。`userdata`代表一块原始内存。有两种类型的`userdata``full userdata`即由Lua管理的一块内存的数据,`light userdata`它只是一个C指针值。除了赋值和类型检测外,Lua 不提供任何操作 `userdata` 的机制。通过使用`metatables`,程序员可以定义对`full userdata`的操作(参见§2.4)。在 Lua 中无法创建或修改`usedata`,只能通过 C API 进行创建或修改。这保证了宿主程序和 C 库所拥有的数据的完整性。
40+
41+
类型 `thread` 代表独立的执行线程,它用于实现协同程序(参见§2.6)。Lua 线程与操作系统线程无关。Lua 支持所有系统上的协程,即使是那些本身不支持线程的系统。
42+
43+
类型 `table` 实现关联数组,即数组不仅可以以数字作为索引,还可以以除 `nil``NaN`(非数字是 IEEE 754 标准使用的特殊浮点值,用于表示未定义的数值结果,例如 0/0。) 之外的任何 Lua 值作为索引。`table` 可以是异构的;也就是说,它们可以包含所有类型的值(除了 `nil`)。与值 nil 关联的任何`key`均不被视为表的一部分。相反,任何不属于表的`key`都具有关联值 nil。
44+
45+
46+
2147
### 2.2 环境变量
2248

2349
### 2.3 错误处理

0 commit comments

Comments
 (0)