lua学习记录
1.八种数据类型:number,string,boolean,nil,function,table,协程,自定义类型
空字符串和数字0是真,false和nil为假
2.lua是动态语言,每个变量携带自己的类型,可以运行时类型转换,print(type(my_var))得到类型
3.不格式化的字符串:print([[aa]]);print([==[[a]]==]),注释也可以用--[==[和--]==]
4.tonumber,tostring,#得到字符串长度
5.理解数组:a={x=10, y=45; "one", "tow", "three"}
for i,v in pairs(a) do print(i,v) end
6.local foo1 = foo1 局部变量拷贝自全局变量
7.常用的控制流程:if_else_then,while_do_end,repeat_until,for_do_end
8.函数的参数如果是字符串或者数字,圆括号可有可无
9.lua提供了冒号操作符模仿面向对象的调用:string.byte(data,i)等价于data:byte(i)前提是type(data)是string
这是lua提供的语法糖,function的写法也是一种语法糖,使得代码看起来像pascal
10.闭包的例子
function Create(n) local function foo1() print(n) end local function foo2() n = n + 10 end return foo1,foo2 end f1,f2 = Create(1979) f1() -- 打印1979 f2() f1() -- 打印1989 f2() f1() -- 打印1999
上面代码来自:http://www.cnblogs.com/effort-rookie/archive/2012/10/10/2718023.html
闭包:就是函数加上‘局部变量’的控制块,理解局部变量的生存周期;闭包可对应设计模式的工厂模式;
函数是编译时(静态),闭包是运行时(动态);对象是附有行为的数据,而闭包是附有数据的行为
11.当函数最后一个动作是调用另外一个函数时,我们称这种调用尾调用,相当于goto所以不需要额外的堆栈空间
12.package.loadlib: 从dll或者so引用函数;lua-5.3去掉了package.seeall
13.require先从环境变量找*.lua,再找库*.dll(或*.so),如果是库就用package.loadlib加载
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战