lua入门(2) - 数据类型

Lua语言的数据类型 Lua的简单数据类型使得编程变得直观而高效。尽管Lua只有六种基本数据类型,但它们的灵活性和可组合性为开发者提供了强大的功能。这些数据类型不仅可以单独使用,还可以组合形成更复杂的数据结构,如数组和字典。因此,理解Lua中的数据类型是编程的基本功,也是学习Lua语言的第一步。通过本文的探讨,我们对Lua的基本数据类型有了更加深入的了解,不论是Nil、Boolean、Number、String、Function还是Table,每种类型都有其独特的特性和应用场景。 阅读详情

前言

本文参考自:  Lua 数据类型 | 菜鸟教程 (runoob.com)

 希望详细了解的小伙伴还请查看上方链接: 

八个基本类型

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
print(type(Y))                  -->nil
print(type('Y'))                -->string 

效果演示

可以看到我们这里输出的 type(Y)  是一个 nil 类型,why? 接下来的nil(空)将为你演示。

nil(空)

nil 类型表示一种没有任何有效值,它只有一个值 -- nil,例如打印一个没有赋值的变量,便会输出一个 nil 值:

未初始化变量类型 -  nil

如下: 三个未赋初值的变量输出的类型都是nil

nil 删除表中的键值对

 测试程序

tab1 = { key1 = "val1", key2 = "val2", 
          "val3","val4",key3 = "val5" }
for k, v in pairs(tab1) do
    print(k .. " - " .. v)
end
print("=========直接输出=============")


tab1.key1 = nil
for k, v in pairs(tab1) do
    print(k .. " - " .. v)
end
print("============删除key1后==========")



tab1.key3 = nil
for k,v in pairs(tab1) do
    print(k.. " - "..v)
end    
print("=========删除key3后============")

运行结果

对于全局变量和 table,nil 还有一个"删除"作用,给全局变量或者 table 表里的变量赋一个 nil 值,等同于把它们删掉

nil 作比较时应该加上双引号 "

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

boolean(布尔)

boolean 类型只有两个可选值:true(真) 和 false(假),Lua 把 false 和 nil 看作是 false,其他的都为 true,数字 0 也是 true:

测试程序

print(type(true))
print(type(false))
print(type(nil))
 
if false or nil then
    print("至少有一个是 true")
else
    print("false 和 nil 都为 false")
end

if 0 then
    print("数字 0 是 true")
else
    print("数字 0 为 false")
end

效果演示

number(数字)


  Lua 默认只有一种 number 类型 -- double(双精度)类型(默认类型可以修改 luaconf.h 里的定义),以下几种写法都被看作是 num

string(字符串)

  “” '' --  表示一个字符串


  [[ ]]     -- 表示一块字符串
 

 数字可以强转字符串

在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字:

用 .. 进行字符串的拼接

 

table(表)

  在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。也可以在表里添加一些数据,直接初始化表:

初始化表

根据索引(key)修改表

  Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。

lua的索引从1 开始(而不是)

table 不会固定长度大小,有新数据添加时 table 长度会自动增长,没初始的 table 都是 nil。

function(函数)

在 Lua 中,函数是被看作是"第一类值(First-Class Value)",

函数可以存在变量里:

lambda表达式(匿名函数)传参


thread(线程)


在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,
可以跟其他协同程序共享全局变量和其他大部分东西。

线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。

userdata(自定义类型)


userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,
可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用

Lua编程(初级入门) 1.什么是lua语言 轻量的脚本语言,使用标准c语言的源代码形式开发,目的为了嵌入应用程序中,为应用程序提供灵活的拓展和定制功能   2.lua与C#区别 几乎所有平台os都可以编译运行,可以很方便的更新代码。 C#只能在特定的操作系统中编译成dll文件,然后打包进安装包运行,在移动平台上不能更新替换已有的dll文件,除非重新下载   3.Lua的第一行代码 下载Lua安装之后有两... 阅读详情

相关推荐

从零搭建IoT数据中台:STM32+WebSocket实现边缘设备与Web端实时双向通信

本文详细介绍了如何从零搭建基于STM32和WebSocket协议的IoT数据中台,实现边缘设备与Web端的实时双向通信。通过硬件选型、协议设计、服务器搭建及安全优化,提供了一套低延迟、高并发的企业级解决方案,适用于智能农业和工业监控等场景。

tea88的博客 749

Lua - 变量、标识符、注释、type

Lua 中的 注释为 两个下划线 Lua中的变量类型不需要进行声明 Lua中的 分号可有可无 Lua 中的变量类型可以随意进行改变 Lua最好避免 “下划线+ 大写字母 Lua变量单引号、双引号都可以 Lua变量命名不能以数字开头,否则报错 Lua中的 nil 销毁类型所占用的资源 == C# 中的 null Lua 中的 多注释 --[[ --]] 也叫做 块儿注释 Lua 中可以使用:type(变量) 得到变量的类型 Lua 没有 int float ,只有 number 类型,如果是带.

zhanxxiao的博客 2857

基于SVPWM控制策略的二极管钳位型NPC逆变器并网闭环simulink仿真

本文介绍了二极管钳位型三电平SVPWM技术在逆变器中的应用,通过控制IGBT的开关状态,将直流电压转换为三相交流电压,并采用钳位技术降低谐波失真,提高输出质量。文章还描述了基于SVPWM控制策略的二极管钳位型NPC逆变器并网闭环的Simulink仿真模型,该模型实现了并网控制,具有优异的性能,THD小于1%,适用于新手学习。仿真模型参数包括DC 800V、AC 380V、功率100kw,采用三电平NPC拓扑结构和SVPWM闭环控制策略,配备LCL滤波器,生成三电平波形,监测交流侧电压电流、有功功率和无功功率

2510_91195931的博客 466

(2)LUA程序设计-类型与值(type & value)

1.介绍 LUA程序语言,它是一种动态(弱)类型的语言,没有类型定义的语法,它包含八种不同的基本(原子)类型 [ nill空,boolean布尔,number数字,string串,userdata用户自定义数据,function函数,thread线程,talbe表 ], 每一个变量都可以包含任何类型(举例如下)。 比如,v = 'abc‘ -- 将V初置值为字符串‘abc’...

数据库天地 364

从零到一:NI USB-8506 LIN通讯的驱动安装与硬件调试全攻略

本文详细介绍了NI USB-8506 LIN通讯设备的驱动安装与硬件调试全流程,包括硬件准备、驱动下载与配置、NI MAX设置及常见问题解决方案。通过实战应用与性能优化技巧,帮助用户快速掌握LIN通讯技术,适用于车载数据记录和自动化测试等场景。

weixin_28273593的博客 924

从机械臂示教到厨房做饭:ACT模仿学习如何让机器人更“人性化”?

本文探讨了ACT(Action Chunking with Transformers)模仿学习技术如何让机器人更“人性化”,特别是在厨房等复杂场景中的应用。通过动作分块(Action Chunking)和时态融合(Temporal Ensemble)技术,机器人能够像人类一样记忆和执行复杂任务,如烹饪。文章还分析了ACT在家庭场景中的落地挑战及其在康复医疗、柔性制造等领域的跨领域应用潜力。

weixin_30613343的博客 255

Lua基本数据类型

Lua基本数据类型

weixin_46935110的博客 3977

同步辐射材料科学应用指南:从XAFS原位实验到数据处理

材料结构分析是材料研究的核心环节,但传统实验室X射线受限于能量固定、亮度不足,往往难以回答原子局域配位、非晶结构及动态演变等关键问题。同步辐射光源以高通量、连续可调、偏振可控及脉冲时间结构等特性,将材料表征从静态观察推进到原位动态追踪层次。基于X射线吸收精细结构谱(XAFS)、原位实验、X射线衍射与散射、微区成像等技术,研究人员可实现元素选择性分析、近邻原子环境解析及真实工况下的结构演变监测。本文从技术原理出发,覆盖实验方案设计、样品制备、现场对光、数据处理与常见故障排查,并结合典型应用场景,为材料科学领域

weixin_32612263的博客 166

lua入门教程:type函数

在Lua中,type函数是一个内置函数,用于返回给定值的类型。Lua 支持多种数据类型,包括nil(空值)、boolean(布尔值)、number(数字)、string(字符串)、table(表)、function(函数)、userdata(用户数据,用于表示由 C 语言代码提供的数据)、thread(线程,Lua 5.1 及以后版本中的协程)以及(轻量用户数据,也是用于 C 语言数据,但与userdata不同)。type。

1338

W5500 MACRAW模式实战:在ESP32上抓取并解析原始以太网数据包

本文详细介绍了如何在ESP32开发板上使用W5500芯片的MACRAW模式捕获和解析原始以太网数据包。通过硬件连接指南、代码实现示例和协议解析技巧,帮助开发者深入理解网络通信底层机制,实现网络嗅探和自定义协议开发等高级应用。

weixin_42520573的博客 418

1、VMware vSphere 全面指南:从入门到精通

本文全面介绍了VMware vSphere从入门到精通的完整知识体系,涵盖基础概念、环境适配、部署规划、安装配置、网络与存储准备、虚拟机创建与管理、资源组织、事件监控、巡检流程、主机配置文件管理、资源池优化、高可用性与容错应用,以及故障排除方法。结合实用工具和部署技巧,帮助读者系统掌握vSphere的核心功能与运维实践,提升虚拟化环境的稳定性与管理效率。

pz890123的博客 95

Lua type和typeof区别

type 是lua内置的函数,用来获取类型 typeof 是一个自定义的函数,为了用来获取cs的类型 代码和输入如下: local a = 1 print(type(a)) -- number print(typeof(a)) -- 报错 print(typeof(CS.UnityEngine.Vector3)) -- UnityEngine.Vector3: -2016843720 print(type(CS.UnityEngine.Vector3)) -- table ...

东北砍王的栖息地 5312

基于ESP32的室内空气质量检测系统开发

随着环境污染问题的日益严重,室内空气质量的监测变得越来越重要。室内空气质量的好坏直接影响到人们的健康,尤其是对于在封闭空间长时间待着的人群。为此,基于ESP32的室内空气质量检测系统应运而生。ESP32作为一款集成了Wi-Fi和蓝牙的高性能微控制器,为嵌入式开发提供了良好的平台,适用于构建各种智能硬件设备。本博客将详细介绍如何基于ESP32开发一个室内空气质量检测系统。系统可以实时监测空气中的温度、湿度、二氧化碳浓度、甲醛浓度等指标,并通过Wi-Fi将数据传输到云端或移动设备,方便用户随时查看空气质量情况。

2201_76125393的博客 832

lua学习-1

  最近打算学习quick cocos2dx,所以首先打算学习一下lua这门语言,Lua 是一个小巧的脚本语言,轻量级,便于扩展。   Lua脚本基本的数据类型:nil、boolean、number、string、userdata、function、thread、table,table 是lua里的特殊数据结构,有些像C++里面的struct,又有些像class。 nil类型表示空值,表示什么...

weixin_30642267的博客 87

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Lua快速入门笔记

本文是笔者参考菜鸟教程对Lua的一个快速入门学习,主要是快速了解Lua的基本语法,让我能够看懂并编写一些简单的Lua脚本。我学习Lua的动机,是在学习Redis时,在高并发的情况下,为了防止出现超卖问题,我需要保证一个线程获取锁和释放锁的操作具有原子性,这个问题的解决方案有很多种方式,但是我选择使用Lua(明确来讲是老师教的Lua脚本方案),所以就趁机花2~3小时快速学习一下Lua,而且Lua也比较有用,就算现在不学,以后也是需要学习的,还不如趁着现在有时间抓紧学一下😄。

热爱编程、热爱生活、热爱探索 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

lua 常用数据类型总结

lua 常用数据类型总结

congge_study的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

lua语言快速入门

2. Lua 语言比较特别的几个地方 2.1 Lua 的下标从 1 开始 t={100}; print(type(t[0])) print(type(t[1])) --nil --number 下标0打印出来是空值 2.2 使用 … 来拼接字符串 和大部分语言使用 + 不同,Lua 中使用两个点号来拼接字符串: print('hello' .. ', world') 2.3 只有 table 这一种数据结构 Lua 中只有一种数据结构,那就是 table,它里面可以包括数组和哈希表: local col

lovelife110的博客 3435

献给Lua小白的Lua基础入门

lua的起源 lua是Roberto Ierusalimschy、Luiz Henrique de Figueiredo 和 Waldemar Celes在1993年创建的一门轻量的可嵌入的快速的脚本语言,其功能非常强大,是以C语言编写的开源语言。lua本身的目的是为嵌入应用程序为应用程序提供灵活的扩展和定制功能。 Lua特性 脚本语言------解释型语言 嵌入程序开发 易与其他语言相互调用 轻量 面向过程 函数式编程 热更新 安装Lua 下载地址:http://luabinaries.sourcef

maybe_ice的博客 2162

Lua语言入门

Lua 是一种高效的轻量级脚本语言。Lua 在葡萄牙语中是“月亮”的意思,它的徽标 形似卫星,寓意着Lua是一种“卫星语言”,能够方便地嵌入其他编程语言中使用。lua语法简单,小巧,源码一共才200多K,本身不会有太强的功能。 本文介绍了Lua语言基础,开发环境搭建,基础库,下载依赖库,本地构建Lua解释器,包管理LuaRocks

yunyun1886358的专栏 3992

Lua语言入门 - 数据类型

Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。 Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

qq_40788199的博客 1158

OpenResty使用Lua大全(一)Lua语法入门实战

一)lua介绍1993 年在巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro in Brazil)诞生了一门编程语言,发明者是该校的三位研究人员,他们给这门语言取了个浪漫的名字——Lua,在葡萄牙语里代表美丽的月亮。事实证明她没有糟蹋这个优美的单词,Lua 语言正如它名字所预示的那样成长为一门简洁、优雅且富有乐趣的语言。

秃了也弱了 4048

Lua 最全的快速入门教程

目录 一、Hello World 二、注释 三、标识符 四、关键字 五、全局变量 六、Lua 数据类型 七、Lua 数据类型 - String 八、Lua 数据类型 - table 九、Lua 数据类型 - function 十、Lua 数据类型 - userdata 十一、Lua 变量 十二、Lua 循环 十三、Lua 函数 十四、运算符 十五、迭代器 十六、Lu...

潘广宇的博客 5187

掌握Lua的基本数据类型:Lua语言必备基础

一、Lua基本数据类型:nil、boolean、number、string、function、table。 二、Lua 通用数据结构的实现。

Lion_Long的博客 4057

lua入门语法,包含安装,注释,变量,循环等

一种脚本语言,设计的目的是为了能够在一些应用程序提供灵活的扩展功能和定制功能。全局变量,在任意一个地方都可以看到,本地变量,在当前的文件,在代码块中才可以看到-- 全局变量赋值a=1-- 局部变量赋值local b=2如果变量没有初始化:则 它的值为nil 这和java中的null不同。

Aric_Jones的博客 1475
上一篇: lua入门(1) - 基本语法
下一篇: lua入门(3) - 变量
mx_jun
博客等级 码龄5年 1605粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值