随笔分类 -  LUA

摘要:1 lua中, userdata存在栈上元素里的只是指针, 他们都会在生命周期结束后被垃圾回收 2 userdata也可以关联元表,不过只能通过luaL_newmetatable创建的元表 3 如果你的userdata关联了一些用户数据,需要userdata失效时也清理掉,那附加的元表可以设置__g 阅读全文
posted @ 2017-06-02 09:42 sysnap 阅读(322) 评论(0) 推荐(0)
摘要:1 继承,用元表的__index来实现 2 类实例,方法和具体数据绑定。可以设置一张表来共享所有方法 3 objtable:func(...) 调用表的函数时,会把objtable赋值给self,这样函数体里面可以直接使用self访问表的数据 4 例子 classA = {} -- 元表 class 阅读全文
posted @ 2017-05-31 17:32 sysnap 阅读(148) 评论(0) 推荐(0)
摘要:1 lua中函数作为表中元素时有三种定义方式 采用‘:’来定义,实际上隐藏了一个形参的声明,这个形参会截获调用函数时的第一个实参并把它赋值给self 2 调用方式,点号和冒号 functb:hello1()functb.hello2() 总结起来就是带:号调用表的函数时,会把表赋值给self,这样函 阅读全文
posted @ 2017-05-31 17:25 sysnap 阅读(2182) 评论(0) 推荐(0)
摘要:1 元表: 定义了对该类型的操作行为,比如字符串的加减乘除 2 Lua 中的每个值都可以有一个 元表。 这个 元表 就是一个普通的 Lua 表, 它用于定义原始值在特定操作下的行为。 如果你想改变一个值在特定操作下的行为,你可以在它的元表中设置对应域。 例如,当你对非数字值做加操作时, Lua 会检 阅读全文
posted @ 2017-05-31 16:56 sysnap 阅读(299) 评论(0) 推荐(0)
摘要:1 table实现介绍 脚本table中的元素在c中是分两个地方存放的,即数组与hash表。table中元素的位置也不是一直固定的,它会根据table被修改的情况动态改变。下面分两种情况说一下table的特点,我们首先要知道在lua中,索引值可以为负数也可以为正数,当为负数的话,top为-1,当为正 阅读全文
posted @ 2017-05-27 19:17 sysnap 阅读(616) 评论(0) 推荐(0)
摘要:from http://www.jellythink.com/archives/580 阅读全文
posted @ 2017-05-27 17:47 sysnap 阅读(291) 评论(0) 推荐(0)
摘要:1 upvalue概念 upvalue:嵌套函数的外部函数的局部变量 function func(a) <== 这个函数返回值是一个函数 return function () a = a + 1 <== 这里可以访问外部函数func的局部变量a,这个变量a就是upvalue return a end 阅读全文
posted @ 2017-05-27 17:12 sysnap 阅读(763) 评论(0) 推荐(0)
摘要:1 背景 lua的值一般都是保存在栈里面,调用函数完毕值在栈会被清掉,从而被GC回收。但有时候C函数需要在函数体的作用域之外保存某些Lua数据,这些数据不能存放在栈里面,有没有全局变量之类的可以存放。答案是肯定的,Lua就提供了一个独立的被称为registry的表,但是Lua代码本身不能访问它 2  阅读全文
posted @ 2017-05-27 10:55 sysnap 阅读(2059) 评论(0) 推荐(0)
摘要:一 LUA 协程函数 1 resume local status, returnvs = coroutine.resume(co, params) co 为 所要启动的协程。 第一次调用resume时,参数是协程函数入口的参数,协程函数调用coroutine.yield之后交出控制权 后面继续调用r 阅读全文
posted @ 2017-05-26 18:53 sysnap 阅读(489) 评论(0) 推荐(0)
摘要:循环 for 数值for循环, 语法: for var=exp1,exp2,exp3 do <执行体> end exp3是可选的,如果不指定,默认为1 举例: for i = 0, #ret, 1 do print("process: "..ret[i]["name"]) end I 表示初始变量 阅读全文
posted @ 2016-07-18 16:07 sysnap 阅读(376) 评论(0) 推荐(0)