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

由C++速通Lua

一.变量声明

1.与C++不同Lua的变量声明不需要声明类型,我们创建了一个变量就相当于声明了它,如:a=10,就相当于声明了变量a。

2.同时Lua中声明的变量默认都是全局变量,如果想要声明局部变量需要在声明前加上local关键字

3.在Lua中没有被声明的变量都是nil,其类似于NULL,比如说我们的程序中没有声明c,我们print(c),那么得到的值就是nil。

4.Lua中允许多重赋值,我们可以a,b,c=1,2,3这样赋值,Lua一句代码的后面不用加分号。

二.数值类型与运算符

1.Lua没有int,char,float等类型,都统称为number类型。

2.Lua中支持常见的运算符,但注意Lua中的^是乘方,同时Lua不支持++,--,+=等复合运算符,同时Lua中的不等于运算符是~=,这与大多数语言不同。

3.Lua中也存在string字符串类型,支持单引号与双引号。

4.如果我们想要存储一个多行的字符串,可以使用[[abcd]],同时这里面的字符串不会被做任何转化,即使存在转义字符。

5.Lua中字符串的连接符号是..,不是+。

6.Lua中的字符串类型与数值类型也可以相互转化,tostring与tonumber,如果转化失败则返回nil。

7.在Lua中,我们可以在字符串的前面加上#来获取其长度。

8.在Lua中也存在bool类型,true与false,需要注意的是Lua中0表示真,在Lua中,除了false与nil,其他的值都表示真。

9.Lua中,也存在与,或,非,分别为and,or,not,需要注意的是Lua中and与or的返回值都是求值的结果,只有not返回值是bool值类型。

三.函数

1.Lua中的函数模式:

function function_name( ... ) -- body end --也可以这么写 function_name =function() --body end

2.Lua中的注释是--。

3.Lua中的函数无需显示的声明返回值,函数的默认返回值是nil,我们也可以使用return显示的返回,同时Lua允许同时返回多个值,如:return a,b

四.数组

1.Lua中的数组为table,Lua中的table存在两种形式,数字做下标的与字符串做下标的,数字做下标的类似于的数组,字符串做下标的类似于map映射表。

2.不同的是Lua中的table没有存储类型限制,我们可以在一个table中即存数字又存字符串。

3.需要注意的是在Lua中,数字下标的数组其提取元素依赖下标,而其下标的起始位置是1,,这与大多数语言不同。

4.对于字符串做下标的数组,类似于map,我们在声明时也需要即声明其键,也需要声明其值,然后通过对应的键做下标来访问对应的值,如声明a={a=10},然后我们通过a["a"]来访问,

5.Lua中的数组添加元素可以直接对未声明的数组下标赋值,这样就可以直接添加元素,如:我们声明了一个4个元素的数组,我们可以直接a[5]=10,来添加第五个元素,我们也可以在未声明第五个元素的情况下直接声明第六个元素,那么未声明的第五个值为nil,更进一步,Lua中不存在数组越界的说法,数组中未声明的元素都默认为nil。

6.Lua中数组也存在insert与remove方法。

7.在Lua中所以的全局变量都在_G这个table中,_G实际上是一个字符串做下标的table,Lua中一个table的类型也是table。

五.分支与循环语句

1.Lua中的分支语句if的模式:

if condition then -- body else if condition then -- body else -- body end

2.Lua中for循环形式:

for i=1,10 do --初始值,结束值 print(i) end --这个for循环也可以有步长(可以为负) --例如这里通过步长反向遍历 for i=10,1 -1 do print(i) end

在Lua的for循环在循环变量i是不能更改的,强行更改只会创建一个新的i,同时存在break。

3.Lua中的while循环,while n>1 --body end。

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

相关文章:

  • 5.10华为OD机试真题 新系统 - 美观的灯笼 (Java/Py/C/C++/Js/Go)
  • 国家电网PPT:山东省域台区云储能关键技术及工程应用
  • HBM2E性能优化实战:从理论带宽到有效带宽的调优策略
  • BilibiliDown:免费开源工具,轻松批量下载B站视频的完整指南
  • 【突破性发现】Perplexity已悄然支持IUPAC命名→SMILES双向解析(仅限Beta通道,本周五关闭注册)
  • iG化学里面的章节,原子、元素和化合物会用到的核心词汇有哪些?
  • 【linux学习】在linux下使用git提交到gitee
  • Arm商业模式与AI时代价值分析:从IP授权到服务器CPU的机遇与挑战
  • 百思特人力资源管理体系升级咨询公司,筑牢企业战略超越核心支撑
  • 工业级核心板高低温测试实战:从电源、时钟到DDR的稳定性炼狱
  • 一个不卖工具只解痛点的AI平台,如何赢得800家制造业选择
  • 文献分享:一种显著的反向蛋白质促溶标签
  • 别再手动叠加Mesh了!用UE5的CustomDepth实现点击物体边缘高亮(附蓝图与材质节点详解)
  • 告别AI痕迹!降AIGC工具实测TOP榜与安全选型攻略
  • 2026 AI剪辑选型:长视频叙事理解能力该怎么评估
  • 长春沙发翻新换皮靠谱商家推荐|匠阁沙发翻新、御匠沙发翻新、锦修沙发翻新三大品牌全解析、服务内容、全市上门 - 卓信营销
  • 别急着Waive!Allegro中那些‘烦人’DRC错误的正确处理姿势(以Soldermask间距为例)
  • 立创EDA专业版迁移保姆级教程:从标准版无缝升级,避免文件丢失
  • 基于RT-Thread Nano的机智云物联网设备多任务化移植实践
  • 自省头适配Qwen3与Phi-4的关键参数调整
  • WorkshopDL:跨平台Steam创意工坊模组下载器终极指南
  • Hermes Agent 框架用户配置 Taotoken 作为自定义模型提供方的指南
  • poi-tl vs. 其他方案:SpringBoot项目里选哪个来动态生成Word?我做了个对比评测
  • 动态可持续场景下的天地一体化融合通信关键技术【附模型】
  • Python金融数据获取的完整实战指南:从通达信接口到专业分析
  • 从零开始使用curl命令调试taotoken大模型api接口的完整步骤
  • logiVID-ZU视觉开发套件:异构计算平台如何重塑嵌入式视觉开发流程
  • 同样厘米级精度,无感定位相较 UWB 更适配全域场景核心解析
  • 别再乱写Filter和Interceptor了!SpringBoot登录校验实战,从令牌生成到统一拦截的完整流程
  • 终极指南:如何用VisualCppRedist AIO一次性彻底修复Windows运行库问题