Lua数据类型
Lua是动态类型语言,因此,变量不需要类型定义,只需要为变量赋值。而值可以存储在变量中,作为参数传递或作为结果返回。在Lua中,有8种基本数据类型:
- nil:无效值,在条件表达式中相当于false。该类型只有nil这一个值
- boolean:布尔值,包含两个值false和true
- number:数字,Lua中的数字实际上是双精度类型的浮点数
- string:字符串,由一对 单引号 / 双引号 / 双方括号 表示
- table:表,Lua中的表实际上是一个“关联数组”,其索引可以是数字或字符串
- function:函数,由C或Lua实现的函数
- thread:执行的独立线程,用于执行协同程序
- userdata:自定义类型,表示任意存储在变量中的C数据结构
一、nil(空)
nil类型表示没有任何有效值,该类型只有一个值:nil。例如,打印一个没有赋值的变量,便会输出nil值:
1 |
|
对于全局变量和table来说,nil还有“删除”作用,给全局变量或者将table表里的变量赋值为nil,等同于把它们删掉,我们来看如下代码:
1 |
|
其执行结果为:
1 |
|
二、boolean(布尔)
三、number(数字)
四、string(字符串)
五、table(表)
在Lua中,table的创建是通过“构造表达式”完成的,最简单的构造表达式是{},它用来创建一个空表。当然,在初始化表时可以在表里添加一些数据。比如:
1 |
|
我们要知道的是,Lua中的表实际是一个“关联数组”,数组的索引可以是数字或者字符串。比如:
1 |
|
其执行结果为:
1 |
|
不同于其他语言把0作为数组的初始索引,在Lua中,表的默认初始索引以1开始。我们来如下代码:
1 |
|
其执行结果为:
1 |
|
需要注意的是,表的长度大小是不固定的,在添加新数据时表的长度会自动增长;当索引一个没有初始化(不存在)的值时会返回nil;Lua在内部实现上,采用哈希表和数组分别保存键值对和普通值,因此不推荐混合使用这两种赋值方式。
六、function(函数)
七、thread(线程)
八、userdata(自定义类型)
Lua数据类型
https://kuberxy.github.io/2020/12/17/Lua数据类型/