Lua与宿主程序之间的关系可以嵌入到宿主程序并为宿主程序提供脚本能力同时可以帮助拓展宿主程序。另外Lua也提供了一些工具帮助编译Lua文本luac执行lua脚本lua以下介绍时都是基于lua 5.3的源码。二、Lua基本数据类型Lua总共有9个基本数据类型分别是boolean布尔 , number数值 , string 字符串, nil空 , function , table 表,userdata , lightuserdata , thread线程。lua.h展开代码语言C自动换行AI代码解释/* ** basic types */ #define LUA_TNONE (-1) #define LUA_TNIL 0 #define LUA_TBOOLEAN 1 #define LUA_TLIGHTUSERDATA 2 #define LUA_TNUMBER 3 #define LUA_TSTRING 4 #define LUA_TTABLE 5 #define LUA_TFUNCTION 6 #define LUA_TUSERDATA 7 #define LUA_TTHREAD 8 #define LUA_NUMTAGS 9展开代码语言Bash自动换行AI代码解释 type(nil) nil type(true) boolean type(6.66) number type(hello) string type(io.stdin) userdata type(print) function type(type) function type({}) table宏类型数据结构LUA_TNONE无类型无LUA_TNIL空类型无LUA_TBOOLEAN布尔类型无LUA_TLIGHTUSERDATA指针void *LUA_TNUMBER数字lua_NumberLUA_TSTRING符串TStringLUA_TTABLE表TableLUA_TFUNCTION函数CClosure、LClosureLUA_TUSERDATA指针void *LUA_TIHREADLua虚拟机、协程lua_State其中LUA_TLIGHTUSERDATA和LUA_TUSERDATA一样 区别在于前者的分配释放由 Lua外部的使用者来完成而后者则是通过Lua 内部来完成的。userdata 类型允许把任意的 语言数据保存在 Lua 语言变量中 Lua 语言中用户数据类型除了赋值和相等性测试外没有其他预定义的操作 用户数据被用来表示由应用或语言编写的库所创建的新类型。2.1、nilnil 是一种只有一个 ni 值的类型它的主要作用就是与其他所有值进行区分。Lua使用 nil 来表示无效值的情况 一个全局变量在第一次被赋值前的默认值就是nil 而将 nil 赋值给全局变量则相当于将其删除。2.2、booleanBoolean 型具有两个值 true和false 它们分别代表了传统布尔值。不过Lua语言中条件测试例如控制结构中的分支语句将除 Boolean的false和nil外的所有其他值视为真特别的是在条件检测中 Lua 语言把零和空字符串也都视为真。Lua 语言支持常见的逻辑运算符 and、or、not。和条件测试一样所有的逻辑运算将Boolean 类型的 false nil 当作假而把其他值当作真。逻辑运算符 and 的运算结果为如果它的第一个操作数为“false”则返回第一个操作数否则返回第二个操作数。逻辑运算 or 的运算结果为如果它的第一个操作数不为“false”则返回第一个操作数否 返回第二个操作数。展开代码语言Bash自动换行AI代码解释Lua 5.3.6 Copyright (C) 1994-2020 Lua.org, PUC-Rio 1 and 2 2 nil and 10 nil false and 4 false 0 or 5 0 false or hello hello nil or false falseand or 都遵循短路求值 Short-circuit 巳valu ion 原则即只在必要时才对第二个操作数进行求值。not 运算符永远返回 Boolean 类型的值。展开代码语言Bash自动换行AI代码解释 not nil true not false true not 0 false not not 1 true not not nil false2.3、numberLua 语言为数值格式提供了两种选择 被称为 int 64 型和被称为float 的双精度浮点型注意lua中“float”不代表单精度类型。整型的 人是 Lu 5.3 要标志也是与之前版本相 的主要区。展开代码语言Bash自动换行AI代码解释 type(3) number type(3.3) number type(3.333333333333333333333333333333333333333) number type(-3) number type(0.2e3) number type(0x1p-1) number具有十进制小数或者指数的数值会被当作浮点型值否则会被当作整型值还可以使用科学记数法书写数值常量。由于整型值和浮点型值 类型都是 number 所以它 是可以相互转换的。同时 具有相算术值的整型值 和点型值在lua语言中是相等的。
掌握Lua的基本数据类型:入门必备基础
发布时间:2026/5/15 22:59:42
Lua与宿主程序之间的关系可以嵌入到宿主程序并为宿主程序提供脚本能力同时可以帮助拓展宿主程序。另外Lua也提供了一些工具帮助编译Lua文本luac执行lua脚本lua以下介绍时都是基于lua 5.3的源码。二、Lua基本数据类型Lua总共有9个基本数据类型分别是boolean布尔 , number数值 , string 字符串, nil空 , function , table 表,userdata , lightuserdata , thread线程。lua.h展开代码语言C自动换行AI代码解释/* ** basic types */ #define LUA_TNONE (-1) #define LUA_TNIL 0 #define LUA_TBOOLEAN 1 #define LUA_TLIGHTUSERDATA 2 #define LUA_TNUMBER 3 #define LUA_TSTRING 4 #define LUA_TTABLE 5 #define LUA_TFUNCTION 6 #define LUA_TUSERDATA 7 #define LUA_TTHREAD 8 #define LUA_NUMTAGS 9展开代码语言Bash自动换行AI代码解释 type(nil) nil type(true) boolean type(6.66) number type(hello) string type(io.stdin) userdata type(print) function type(type) function type({}) table宏类型数据结构LUA_TNONE无类型无LUA_TNIL空类型无LUA_TBOOLEAN布尔类型无LUA_TLIGHTUSERDATA指针void *LUA_TNUMBER数字lua_NumberLUA_TSTRING符串TStringLUA_TTABLE表TableLUA_TFUNCTION函数CClosure、LClosureLUA_TUSERDATA指针void *LUA_TIHREADLua虚拟机、协程lua_State其中LUA_TLIGHTUSERDATA和LUA_TUSERDATA一样 区别在于前者的分配释放由 Lua外部的使用者来完成而后者则是通过Lua 内部来完成的。userdata 类型允许把任意的 语言数据保存在 Lua 语言变量中 Lua 语言中用户数据类型除了赋值和相等性测试外没有其他预定义的操作 用户数据被用来表示由应用或语言编写的库所创建的新类型。2.1、nilnil 是一种只有一个 ni 值的类型它的主要作用就是与其他所有值进行区分。Lua使用 nil 来表示无效值的情况 一个全局变量在第一次被赋值前的默认值就是nil 而将 nil 赋值给全局变量则相当于将其删除。2.2、booleanBoolean 型具有两个值 true和false 它们分别代表了传统布尔值。不过Lua语言中条件测试例如控制结构中的分支语句将除 Boolean的false和nil外的所有其他值视为真特别的是在条件检测中 Lua 语言把零和空字符串也都视为真。Lua 语言支持常见的逻辑运算符 and、or、not。和条件测试一样所有的逻辑运算将Boolean 类型的 false nil 当作假而把其他值当作真。逻辑运算符 and 的运算结果为如果它的第一个操作数为“false”则返回第一个操作数否则返回第二个操作数。逻辑运算 or 的运算结果为如果它的第一个操作数不为“false”则返回第一个操作数否 返回第二个操作数。展开代码语言Bash自动换行AI代码解释Lua 5.3.6 Copyright (C) 1994-2020 Lua.org, PUC-Rio 1 and 2 2 nil and 10 nil false and 4 false 0 or 5 0 false or hello hello nil or false falseand or 都遵循短路求值 Short-circuit 巳valu ion 原则即只在必要时才对第二个操作数进行求值。not 运算符永远返回 Boolean 类型的值。展开代码语言Bash自动换行AI代码解释 not nil true not false true not 0 false not not 1 true not not nil false2.3、numberLua 语言为数值格式提供了两种选择 被称为 int 64 型和被称为float 的双精度浮点型注意lua中“float”不代表单精度类型。整型的 人是 Lu 5.3 要标志也是与之前版本相 的主要区。展开代码语言Bash自动换行AI代码解释 type(3) number type(3.3) number type(3.333333333333333333333333333333333333333) number type(-3) number type(0.2e3) number type(0x1p-1) number具有十进制小数或者指数的数值会被当作浮点型值否则会被当作整型值还可以使用科学记数法书写数值常量。由于整型值和浮点型值 类型都是 number 所以它 是可以相互转换的。同时 具有相算术值的整型值 和点型值在lua语言中是相等的。