这一篇主要讲讲如何在lua遍历List<>或者Dictionary<>的对象。起因是在XLua官方讨论群里面正好有人问了怎么遍历,然后官方人员说使用for k,v in pairs(要遍历对象) do ... end就可以了。自己就顺手去试了试,结果发现一直报错,纠结了大半天,就在这儿记录一下。最后问了官方的人,结果是因为XLua不是最新的版本,心里苦啊。所有大家一定要更
js中那么多循环,for for...in for...of forEach,有些循环感觉上是大同小异今天我们讨论下for循环和forEach的差异。我们从几个维度展开讨论:for循环和forEach的本质区别。for循环和forEach的语法区别。for循环和forEach的性能区别。本质区别for循环是js提出时就有的循环方法。forEach是ES5提出的,挂载在可迭代对象原型上的方法,例如A
lua有多种遍历table的方法,比如ipairs,pairs,拿到table的长度#table等等。这几种遍历的方式遇到不同的情况遍历出来的结果也不一样,具体是怎么回事呢,下面就将所有的情况都分析一遍。首先就是遍历的元素不是K,V的形式,在lua中如果被遍历的元素不是键值对的形式,那么lua会顺序遍历元素。看几个示例一目了然。1. table中都是一个个的单元素--table中都是一个个的单元素
当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是:1. for key, value in pairs(tbtest) do 2. XXX 3. end 4. 5. for key, value in ipairs(tbtest) do 6. XXX 7. end
lua userdata 就是用户自定义类型的数据 直接上例子 wss@localhost:~/lua/userdata/userdata2$ lsarray.so arr_test.lua lib.c log.lua wss@localhost:~/lua/userdata/userdata2$
原创 2022-01-11 17:45:30
630阅读
1、来自Lua 5.0Reference Manual  -The Applicatioin Program Interface -UserdataUserdata represents C values in Lua. Lua supports two types of userdata: full userdata and light userdata.A full userdata
function(函数)在Lua中,函数是被看作“第一类值(First class Value)”。函数可以存在变量里。function可以以匿名函数(anonymous function)的方式通过参数传递。thread(线程)在Lua中,最重要的线程是协同程序,它跟线程差不多,拥有自己独立的栈,局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。userdata(自定义类型)u
Q:如何使用”userdata”的”metamethods”?A:我们继续来修改上一节中的例子,这次我们的目标是使用面向对象的方式调用”userdata”的方法。这个目标既可以在Lua中实现,也可以在C库中实现,我们先来看一个比较简单的方式,在Lua中实现。”mylib.c”中代码无需更改,只需要修改”a.lua”中的代码,local array = require "mylib" --[[ 这
tolua中c#和lua交互过的对象都有一个ref编号, ref是int类型,ref唯一不重复,一个ref对应一个c#对象tolua中任何c#对象在lua中对应的userdata都是一个int类型的内存指针地址,通过对这个userdata设置不同的metatable来区分userdata对应的c#类型这个userdata指针指向的int内存的值等于第1条的ref值,比如有个c#对象的ref等于13
 这一段时间看了《programming in lua》中的第28章,看一遍并不是很难,但是只是朦胧的感觉,雾里看花,水中望月。最终还是决定敲出来自己看看,练练手,结果受益不少,也遇到了一些问题,记在这里。自己做一个总结,也希望能帮助和我一样lua的初学者。1. 书上并没有写清楚对于CAPI的制作和使用内容。主要包括dll的生成,以及使用(1)dll生成。  直接用vs新建一个dll工程,要记得包
转载 8月前
223阅读
前言这篇博客,我估计写不好。一方面是内容挺绕,一方面是我没有看过书,是照葫芦画瓢写代码。前置要求:Lua调用C代码lua中表与元表Lua操作C语言用户自定义类型数据Userdata上面第三个链接的内容是,C语言自定义数据类型,在Lua中使用userdata表示。Lua调用C中的函数,操作userdata。这样写也挺好,但是分割了userdata和函数。我们知道,lua有元表。那能否将C中的函数,注
转载 6月前
187阅读
Lua Userdata (一)通过一个简单的样例来看一下userdata的使用方法: 写一个C的Lua库,让Lua可以訪问C的数组。借助userdata来实现。 (1)VS中新建一个DLLproject,设置好lua库的包括文件夹、链接库; (2)新建一个源文件main.cpp,代码例如以下: #
转载 2017-07-04 21:02:00
209阅读
2评论
函数:函数可以存储在变量中,可以作为函数的参数 可以作为返回值。 可以重新定义函数增加新的功能 ///这句话暂时没理解 是指动态时期重新定义?还可以避免运行不可靠代码创建安全运行环境而隐藏函数 lua的所有标准库都是c实现的。所以可以调用lua或c实现的函数。UserData自定义类型userdata可以将c数据置入在lua变量中。 userdata 用来描述应用程序或者使用 C 实现的库创建的新
Lua C API编程上,经常有一些博客会说,必须使用luaL_newmetatable和luaL_setmetatable来给userdata加元表。还说给userdata加的元表不是普通的table。于是本着不信邪的态度,我翻了一下源码并自己尝试写了一些测试。普通的表能做userdata的元表么对于这个问题,我觉得是可以的,因为Lua中只有这一种数据结构,不存在什么特别的表。class A
转载 6月前
68阅读
最简单的构造式就是一个空构造式{},用于创建一个空table。构造式还可以用于初始化数组。例如,以下语句:days = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}会将days[1]初始化为字符串“Sunday”、days[2]初始化为"Monday",以此类推。Lua
userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 、指针和类)存储到 Lua 变量中调用。userdata分为两类,”full userdata”和”light userdata”。 full userdata light userdata 定义 ...
原创 2022-11-29 20:06:05
1284阅读
【话从这里说起】在我发表《Lua中的类型与值》这篇文章时,应该好好总结一下Lua中的function和userdata类型。现在是时候总结了。对于function,我在《Lua中的函数》这篇文章中进行了总结,而这篇文章将会对Lua中的userdata进行仔细的总结。【userdata是啥?】userdata是啥?简单直译就是用户数据,如果再文艺一点,就叫做用户自定义数据。要这货有什么好处呢?首先,
转载 6月前
163阅读
(一)通过一个简单的例子来看一下userdata的用法:写一个C的Lua库,让Lua能够访问C的数组,借助userdata来实现。(1)VS中新建一个DLL工程,设置好lua库的包含目录、链接库;(2)新建一个源文件main.cpp,代码如下: #include <stdio.h> #include <string.h> extern "C" { #inc
转载 6月前
66阅读
1、普通for循环遍历List删除指定元素,list.remove(index)List<String> nameList = new ArrayList<>(Arrays.asList("张三", "李四", "王五", "赵六")); nameList.add("张七"); nameList.add("张八"); for (int i = 0; i < nameL
表达式表达式用于表达值lua 中表达式可以为数字常量,自变字符串,变量,一元和二元操作符,函数调用、函数定义、table 构造式算数操作符一元操作符-负号二元操作符+-减号*/^%x ^ 0.5x ^ (-1 / 3) -- x 的三次方再求导10 % 3 = 1 -- 余数计算x % 1 -- 得到的是 x 的小数部分x - x % 1 -- 得到的是 x 的整数部分x - x %
  • 1
  • 2
  • 3
  • 4
  • 5