Lua函数是一阶类型值(first-class value),定义函数就象创建普通类型值一样(只不过函数类型值数据主要是一条条指令而已),所以在函数体中仍然可以定义函数。假设函数f2定义在函数f1中,那么就称f2为f1内嵌(inner)函数,f1为f2外包(enclosing)函数,外包和内嵌都具有传递性,即f2内嵌必然是f1 内嵌,而f1外包也一定是f2外包。内嵌函数可以访问
使用 Lua 进行实际开发过程中,格式化字符串函数 string.format() 使用频率是非常高,这里整理一下关于这个函数使用。参数解析string.format(formatstring, ...)formatstring 为格式化串(必须是一个字符串),其中可能包含多个转义码(例如最为常用 %d %s 等)。... 为数量不定参数列表,以逗号分隔,与格式
一、lua数据结构及内存占用分析1.基础数据结构lua基本数据表示是type+union方式,根据不同类型映射到union不同结构上面,统一表示结构lua_TValue:typedef union Value { GCObject *gc; /* collectable objects */ void *p; /* light userdata */ int b
转载 3月前
14阅读
注: 原文有些地方不够详细或不正确, 我补充完善了一些内容, 如仍有不正确地方, 欢迎指正.1. Lua类实现从网上搜了几个类实现,自己照猫画老虎弄个如下:ClassYM = {x=0, y=0} --这句是重定义元表索引,必须要有, ClassYM.__index = ClassYM --模拟构造体,一般名称为new() function ClassYM:new(x,y) loc
一、Lua table(表)table 是 Lua 一种数据结构,能容纳任何数据类型,如:数字、字典等。Lua table 使用关联型数组,你可以用任意类型值来作数组索引,但这个值不能是 nil。Lua table 是不固定大小,你可以根据自己需要进行扩容。Lua也是通过table来解决模块(module)、包(package)和对象(Object)。例如string.format表示使
转载 6月前
70阅读
最近学习lua今天突然对metatable和__index之间关系有点不清楚,上网查了下加深了对metatable理解,记录一下还是用代码来解释,下面有图解,metatable和__index主要用于继承相关,有两种方式:test.lualocal test = {} function test:new() self.__index = self return setmeta
## Redis Lua 遍历 Map使用 Redis 进行数据存储时,经常会遇到需要遍历 Map 类型数据结构。Redis 提供了一种方便方法来实现这个功能,那就是使用 Lua 脚本。在本文中,我们将学习如何使用 Lua 脚本来遍历 Redis 中 Map,并提供了代码示例供参考。 ### Lua 脚本简介 Lua 是一种轻量级脚本语言,被广泛应用于嵌入式系统和游戏开发中。Re
原创 7月前
201阅读
一、math库 atan2、sinh、cosh、tanh这4个应该用不到。 函数名 描述 示例 结果 pi 圆周率 math.pi 3.1415926535898 abs 取绝对值 math.abs(-2012) 2012 ceil 向上取整 math.ceil(9.1) 10 floor 向下取整 math.floor(9.9) 9 max 取参数最大值
转载 3月前
35阅读
(1)lua 和 C++之间交互基本知识:      lua 和 C++ 之间数据交互通过堆栈进行,栈中数据通过索引值进行定位,(栈就像是一个容器一样,放进去东西都要有标号)其中栈顶是-1,栈底是1,也就是第 1 个入栈在栈底;也可以这么说:正数表示相对于栈底位置(位移),负数表示相对于栈顶位置(位移);(2)计算和清空栈
目录变量基本数据类型变量作用域字符串操作运算符条件分支语句循环函数表实现数组迭代器遍历ipairs 遍历pairs 遍历实现字典实现类公共操作多脚本执行协同程序创建协程运行协程协程挂起协程状态元表Lua 面对对象封装继承多态Lua自带库时间库数学库路径Lua垃圾回收 变量Lua一个变量可以随便赋值,自动识别类型基本数据类型--nil a = nil --number a = 1 a =
https://tboox.org/cn/2017/01/12/lua-profiler/之前在给xmake做构建效率优化时候,需要对lua脚本api调用性能进行分析,分析出最耗时一些lua调用api, 找出性能瓶颈,来针对性地进行优化,那么问题来了,如果对lua脚本像c程序那样进行profile呢?我们现在看下最后实现完最终效果:4.681, 98.84%, 1, anon
最近发现线上有个服务器某些逻辑耗时比较久,问了下同事,他告诉我是因为luapairs函数很慢导致。“啊!不至于吧,这数据量才多少”我一脸诧异,记忆中Lua不至于慢到这种程度,遍历个几十万table速度还是很快,而我们线上这个table数据量才几万。他把线上数据导了出来,做了一个测试,发现仅仅遍历一个5万多table,Lua确实花了将近3秒多时间。整个程序非常简单,大概就是local
转载 4月前
70阅读
Lua:轻量级脚本语言,不需要编译,直接运行,所有脚本语言都有这个特点执行lua方式:(交互式编程,脚本式编程)Lua文件是.lua后缀Lua语句相对C#等编译语言比较随意,语句末不用写分号也可以写分号注释方法:单行注释:-    /     多行注释:--[[   .........   ]]-- 或 -
什么是Lua Lua是一个小巧脚本语言。 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而
问题在Kuberetes应用中,一般都是通过Ingress来暴露HTTP/HTTPS服务。但是在实际应用中,还是有不少应用是TCP长连接,这个是否也是可以通过Ingress来暴露呢?大家知道Kubernetes社区默认带了一个NginxIngress,而它本身又是支持TCP做反向代理。所以也就能支持TCP方式Ingress。具体可以参考:https://kubernetes.gith
转载 4月前
10阅读
这篇文章基于我在日本东京 GoCon Spring 2018什么是映射函数要明白 map 是如何工作,我们需要先讨论一下 map 函数。一个 map 函数用以将一个值映射到另一个值。给定一个值,我们叫 key,它就会返回另外一个值,称为 value。 map(key) → value 现在,map 还没什么用,除非我们放入一些数据。我们需要一个函数来将数据添加到 map 中 insert
Map集合Map是一种把键(key)和值(value)进行映射集合(k-v)。k相当于v索引,v仍然可以是Map类型(k-v)。 键(key)和值(value)都可以是任何引用类型数据。 Map键(key)不允许重复,即同一个Map对象任何两个key通过equals方法比较结果总是返回false。 key集存储形式和Set集合完全相同(即key不能重复) value集存储形式和Lis
Lua是一门语言,我们可以使用一个库,可以在运行时去编译执行Lua代码,从而实现自己内存中数据和逻辑;准备学习环境:新建一个Lua项目目录,用来写我们Lua代码; 进入目录,右键使用vsCode打开 或者,先打开vsCode,然后 文件->打开文件夹 ,选择我们项目目录;为vsCode安装Lua相关插件Lua(Lua Language Server coded by Lua)和
安装好Lua之后就可以进行Lua脚本编程学习了。1.终端执行lua test.lua就是执行test.lua脚本;2.终端执行lua -i test.lua  执行问test.lua之后就会进入交互模式;3.在交互模式中运行dofile(”test.lua“)就可以运行test.lua.一种常用编辑模式就是左边开一个调试窗口,启用lua交互模式用dofile运行程序,另一边开一个编
lua有8中基本类型,string(字符串),number(数字),nil(空),userdata(自定义类型),table(表),boolean(布尔),thread(线程),function(函数)。lua注释        单行注释:--被注释内容;    &nbsp
  • 1
  • 2
  • 3
  • 4
  • 5