当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do XXX end for i=1, #(tbtes
第一个例子将Lua脚本作为一个小型的简化版的“数据库”,展现了如何简单高效的将这个“数据库”中的数据转化为网页显示。-- "db.lua"文件中内容。 --[[ 这里看似是一张名为"entry"的表中存储了许多数据, 实际上在转化程序中这时一个名为"entry"的函数, 参数是下面这个存储了许多数据的"table"。 还记得"foo({})"与"foo{}"等同吗?]
转载 2024-03-14 07:01:48
39阅读
一个Lua库实际上是一个定义了一系列Lua函数的代码块,并将这些函数保存在适当的地方,通常作为table的域来保存。Lua的C库就是这样实现的。    作为一个完整的库,我们还需要写一个函数来负责把库中的所有公共函数放到table里,然后注册到Lua全局变量里,就像luaopen_*做的一样。 Lua为这种需求提供了辅助函数luaL_register,它接受一个C函数
转载 2024-04-24 11:32:19
53阅读
作者:糊涂小蜗牛 取长度使用到的函数/* ** Try to find a boundary in table 't'. A 'boundary' is an integer index ** such that t[i] is non-nil and t[i+1] is nil (and 0 if t[1] is nil). */ lua_Unsigned lua
转载 2024-02-26 12:42:12
177阅读
Ngx指令lua_code_cache on | off; 作用:打开或关闭 Lua 代码缓存,影响以下指令: set_by_lua_file , content_by_lua_file, rewrite_by_lua_file, access_by_lua_file 及强制加载或者reload Lua 模块等.缓存开启时修改LUA代码需要重启nginx,不开启时则不用。开发阶段一般关闭缓存。
转载 2024-03-05 14:48:00
112阅读
0x05 函数定义与调用形式定义:函数是对语句和表达式的抽象。函数的调用形式:无论是语句或者表达式,都需要将所有参数放到一对圆括号中。即使调用没有参数也必须写出一对空括号。 注:此条规则对一种情况例外—一个函数只有一个参数,并且此参数是一个字面字符串或者table构造式(见下列代码)print "Hello World" --只有一个参数且为字面字符串 f{x = 20, y = 30}
转载 2024-03-11 11:44:44
137阅读
1. lua 5.3 string.pack 和 string.unpackhttp://cloudwu.github.io/lua53doc/manual.html#6.4.2 用于 string.pack, string.packsize, string.unpack 的第一个参数。 它是一个描述了需要创建或读取的结构之布局。 格式串是由转换选项构成的序
转载 2024-05-27 14:11:38
222阅读
数组操作在Lua中,“数组”只是table的一个别名,像lua_settable和lua_gettable这种操作table的函数,也可以用于操作数组。 然而API为为数组操作提供了专门的函数。 * 出于性能考虑,通常会在算法中用循环来访问数组 * 为了方便,像字符串key,整数key是很常用的//index表示在栈中的位置,key表示元素在 table中的位置 void lua_rawge
转载 2024-03-04 12:06:17
170阅读
-- Lua数组--[[ 数组,就是相同数据类型的元素按照一定的顺序排列的集合,可以是一维数组和多维数组 Lua数组的索引键值可以使用整数表示,数组的大小不是固定的 一维数组 最简单的数组,其逻辑结构是线性表,一维数组可以用for循环出数组的元素。 来,上实例]]array = {"Lua","C","C++","Objective-C","Java","python"}
lua中,  问题1:如果你在可变参数...中传入若干个参数,其中有的参数要带nil,这时怎么解决呢?(比如local function _test(...) end    _test(1, nil, 3))  问题2:更甚于在一个带可变参数的函数里返回值是一个带可变参数的尾调用,这时还能正确得到要的参数?(比如 local function _test2(...) retu
Lua中的table函数库 一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明.  table.concat(table, sep,  start, end)concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素,
转载 2024-05-23 16:27:30
53阅读
一、单个参数的传递   首先我们在Lua中注册一个C类PJYCallbackMgr,其中一个方法为:          1. int testLuaCall(lua_State* L){ 2. ... 3. ...   然后我们在Lu
转载 1月前
400阅读
数组下标是从1开始:[code="lua"]local arr1 = {1, 2, 3,6, [5]=5}print(arr1[4])print(arr1[5])65[/code]
原创 2023-04-11 00:30:08
317阅读
数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组 一维数组 实例 输出 实例 输出 多维数组 实例 输出 实例 输出
转载 2018-11-19 00:49:00
715阅读
前言我在学习generator ,yield ,co,thunkify的时候,有许多费解的地方,经过了许多的实践,也慢慢学会用,慢慢的理解,前一阵子有个其他项目的同事过来我们项目组学习node,发现他问的问题和我学习node的时候,遇到的困难都一样,所以产生写篇blog记录下co,thunkify的运用和原理,和园子里的神仙们交流交流,不对之处,还请指正,谢谢。我在node的编写中,认真敲着敲着代
赋值语句>赋值是改变一个变量的值和改变表域的最基本的方法a = "hello" .. "world" b = 10 t.n = t.n + 1>Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量a, b = 10, 2*x <--> a=10; b=2*x>遇到赋值语句 Lua 会先计算右边所有的值然后再执行
转载 2024-04-15 19:43:29
103阅读
写在最前面《cocos2d-x lua核心编程》是我首次购买电子书,坑的就不谈了,书里的代码部分基本上不是少空格就是多换行,让阅读变得十分困难。所以又购买了实体书,加上看一些大佬视频和博客,这才慢慢步入正轨,当然我的lua水平不高,仅作为游戏开发的工具,写这一系列的博客,希望能够让又同样想法的朋友少走弯路。简介安装什么就不说了。Lua的代码规范  - Lua的多条语句之间并不要求任何分隔符,如C语
转载 2024-07-29 18:01:28
37阅读
目录 1、Lua数组介绍2、Lua数组的遍历3、多维数组4、数组的遍历:不管1维还是多维还是谭维维1、Lua数组介绍lua数组是可以看作是基于table类型的特化(可能这么描述不是很准确,但是这么讲是有理由的)-- Lua 数组 : 区别于c/c++,长度可变 -- 一维数组 array = {"Lua","knowledge"} -- 实际上数组是基于表的特殊实现 print(ty
转载 2024-03-05 11:12:36
282阅读
1 数据结构 1.1 数组 对table使用数字索引,即把table当数组使用。约定数组下标从1开始。 若索引中间有空洞,table并不会为空洞索引分配空间。 只有当表是顺序表时,#tab返回的长度才有意义。table.maxn() 返回最大的索引值。 对于非顺序表,遍历时使用pairs是一个好方法。 1.2 多维数组 即table
转载 2024-04-08 14:20:36
31阅读
一、简介  Lua的变长参数和unpack函数在实际的开发中应用的还挺多的,比如在设计print函数的时候,需要支持对多个变量进行打印输出,这时我们就需要用到Lua中的变长参数和unpack函数了。二、Lua变长参数与unpack函数  Lua中支持可变参数,用 ... 表示。比如定义下面的这样一个函数:local function func1(...) end  当然它也支持在变长参数前面添加固
  • 1
  • 2
  • 3
  • 4
  • 5