Lua 数据类型

简介: Lua是动态类型语言,拥有nil、boolean、number、string、userdata、function、thread和table等8种基本类型。table是核心,可作为关联数组,索引可为数字、字符串或表。nil表示无效值,用于清除变量或表项。type()函数用于检测值的类型。当比较nil时,应使用"=="双引号,因为type(X)==nil返回false,实际是比较字符串""nil"。

Lua 数据类型

Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。

Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

数据类型 描述
nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean 包含两个值:false和true。
number 表示双精度类型的实浮点数
string 字符串由一对双引号或单引号来表示
function 由 C 或 Lua 编写的函数
userdata 表示任意存储在变量中的C数据结构
thread 表示执行的独立线路,用于执行协同程序
table Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。
我们可以使用 type 函数测试给定变量或者值的类型:

实例
print(type("Hello world")) --> string
print(type(10.4*3)) --> number
print(type(print)) --> function
print(type(type)) --> function
print(type(true)) --> boolean
print(type(nil)) --> nil
print(type(type(X))) --> string
nil(空)
nil 类型表示一种没有任何有效值,它只有一个值 -- nil,例如打印一个没有赋值的变量,便会输出一个 nil 值:

print(type(a))
nil

对于全局变量和 table,nil 还有一个"删除"作用,给全局变量或者 table 表里的变量赋一个 nil 值,等同于把它们删掉,执行下面代码就知:

tab1 = { key1 = "val1", key2 = "val2", "val3" }
for k, v in pairs(tab1) do
print(k .. " - " .. v)
end

tab1.key1 = nil
for k, v in pairs(tab1) do
print(k .. " - " .. v)
end
nil 作比较时应该加上双引号 ":

type(X)
nil
type(X)==nil
false
type(X)=="nil"
true

type(X)==nil 结果为 false 的原因是 type(X) 实质是返回的 "nil" 字符串,是一个 string 类型:

type(type(X))==string

相关文章
|
1天前
|
存储 索引
Lua 数据类型
Lua是动态类型语言,拥有nil、boolean、number、string、userdata、function、thread和table等8种基本类型。table是核心,可作为关联数组,支持各种索引。`type`函数用于检测变量类型,例如`print(type("Hello world"))`返回`string`。
|
1天前
|
消息中间件 Kubernetes NoSQL
Lua基本数据类型
Lua基本数据类型
|
6月前
|
存储 Java C语言
lua变量、数据类型、if判断条件和数据结构table以及【lua 函数】
lua变量、数据类型、if判断条件和数据结构table以及【lua 函数】
48 0
|
1天前
|
存储 索引
Lua 数据类型
Lua是动态类型语言,拥有nil、boolean、number、string、userdata、function、thread和table等8种基本类型。table是核心,作为关联数组支持多种索引类型。`type`函数用于检测变量类型,如`print(type("Hello world"))`输出"string"。
|
XML 存储 Java
【Lua基础 第1章】初识Lua脚本语言、数据类型、全局变量、关键字的使用
初识Lua脚本语言、数据类型、全局变量、关键字的使用
123 0
【Lua基础 第1章】初识Lua脚本语言、数据类型、全局变量、关键字的使用
|
数据采集 存储 大数据
Lua 语法数据类型与变量|学习笔记
快速学习 Lua 语法数据类型与变量
137 0
|
存储
03 Lua 数据类型
Lua 体积小、启动速度快,一个完整的 Lua 解释器不过200k,在所有脚本引擎中,Lua 的速度可以说是最快的。所以 Lua 是作为嵌入式脚本的最佳选择。
03 Lua 数据类型
|
1天前
|
存储 NoSQL Redis
Redis的Lua脚本有什么作用?
Redis Lua脚本用于减少网络开销、实现原子操作及扩展指令集。它能合并操作降低网络延迟,保证原子性,替代不支持回滚的事务。通过脚本,代码复用率提高,且可自定义指令,如实现分布式锁,增强Redis功能和灵活性。
47 1
|
1天前
|
缓存 NoSQL Java
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
66 0