当前位置: 首页 > news >正文

掌握Lua的基本数据类型:入门必备基础

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_Number

LUA_TSTRING

符串

TString

LUA_TTABLE

Table

LUA_TFUNCTION

函数

CClosure、LClosure

LUA_TUSERDATA

指针

void *

LUA_TIHREAD

Lua虚拟机、协程

lua_State

其中LUA_TLIGHTUSERDATALUA_TUSERDATA一样 ,区别在于前者的分配释放由 Lua外部的使用者来完成,而后者则是通过Lua 内部来完成的。

userdata 类型允许把任意的 语言数据保存在 Lua 语言变量中 Lua 语言中,用户数据类型除了赋值和相等性测试外,没有其他预定义的操作 用户数据被用来表示由应用或语言编写的库所创建的新类型。

2.1、nil

nil 是一种只有一个 ni 值的类型,它的主要作用就是与其他所有值进行区分。Lua使用 nil 来表示无效值的情况 ,一个全局变量在第一次被赋值前的默认值就是nil, 而将 nil 赋值给全局变量则相当于将其删除。

2.2、boolean

Boolean 型具有两个值: 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 false

and 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 false

2.3、number

Lua 语言为数值格式提供了两种选择 被称为 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语言中是相等的。

http://www.jsqmd.com/news/824534/

相关文章:

  • 编程统计不同健身方式消费,减脂健康效果数据,推荐低成本居家健身方案,免去高额健身房消费。
  • 【软考高级架构】论文范文11——论信息系统的安全性与保密性设计
  • 告别烦人黑窗口!QT Creator控制台程序输出完美嵌入IDE的两种方法
  • TDesign小程序模板实战:从零构建首页布局与样式
  • 终极yargs容器化指南:3步实现Docker与CLI应用快速部署
  • 书成紫微动,律定凤凰驯:《第一大道》破局,《凰标》立规,铁哥的道韵流转
  • Notepad--终极指南:10个高效技巧掌握国产跨平台文本编辑器
  • 当你的Windows内核被凝视时,你已经一丝不挂
  • 2026年严选:质量好的墙砖厂商 - 品牌推广大师
  • 书成紫微动,律定凤凰驯:《第一大道》如何撕碎文化圈的资本垄断
  • AI驱动个人网站生成器:基于Next.js与OpenAI的配置化数字名片
  • Windows系统提权揭秘:玩转SC服务提权的“黑魔法”与“防身术”
  • 从YOLOv8到Heatmap:手把手教你搭建一个景区人员拥挤预警系统(含完整代码)
  • Redis高并发基石:从select到epoll的演进与内核事件机制剖析
  • React Native Navigation终极指南:构建原生移动应用导航的完整解决方案 [特殊字符]
  • 终极CMake Config文件生成指南:从入门到精通的完整教程
  • 不只是画图:用Design Entry CIS画原理图符号,你真的理解引脚属性吗?
  • Acton性能调优终极指南:10个提升TON智能合约开发效率的技巧 [特殊字符]
  • Six Degrees of Wikipedia技术解析:广度优先搜索算法如何连接百万页面
  • 思源宋体TTF终极指南:7种字重解决中文排版所有难题
  • 3步搞定Mac Boot Camp驱动部署:告别手动下载的繁琐时代
  • 别再直接跳转了!用iframe在Vue项目里优雅嵌入第三方页面(附B站实战代码)
  • 娱乐媒体平台.htaccess配置终极指南:内容分发与版权保护
  • 题解:P13998 【MX-X19-T7】「LAOI-14」夜に駆ける
  • Flutter本地数据库选型实战:Hive、Isar、Drift,我的项目最终选了谁?
  • 打破设计孤岛:用AI思维重新连接Figma与代码编辑器
  • Copaw:交互式Git工作流增强工具,提升开发者效率
  • 如何用免费开源工具彻底解决Dell G15散热问题:3步终极控制方案
  • STM32驱动安信可Rd-04毫米波雷达:硬件改造、I2C驱动移植与参数调优全攻略
  • 别再傻傻分不清了!STM32硬件IIC和软件IIC驱动OLED,到底哪个更适合你的项目?