
Lua
FreedomExpect
持续学习
展开
-
将一个表作为多个表的元表时碰到的问题
将一个表作为多个表的元表时,一不小心碰到的问题,记录一下。local m = { t = {k = 1, b = 2}, v = 111,}local n = {}local aaa = {}local bbb = {}setmetatable(aaa, {__index=m, __newindex=n})setmetatable(bbb, {__index=m, __newindex=n})print(aaa.t.newKey, aaa.t.b, aaa.v) --原创 2021-08-18 16:39:14 · 173 阅读 · 0 评论 -
lua迭代器
ipairs函数直接上代码,实现lua的ipairs函数local global_t = {"one", "two", "three", "four"}local vlocal iter = function(lvTable, k) k = k + 1 v = lvTable[k] if原创 2019-03-08 12:47:07 · 641 阅读 · 0 评论 -
lua 弱引用table
前言lua采用自动垃圾回收机制。但有的时候,自动垃圾回收并不是那么智能。以下两种情况需要我们手动控制内存:1.全局的对象,如放在全局变量中的table,当不用的时候需要手动设置为nil。2.当一个对象放在一个table中,如果这个对象在其它任何地方都未使用,但是却被当前都容器table所引用着,这会导致这个对象无法得到释放。举个例子:在一个mmo游戏中,玩家上线信息发给服务器,服务器会记...原创 2019-03-06 19:55:56 · 368 阅读 · 0 评论 -
lua __newIndex 元方法
__newindex是一个function的情况:local mt = {}local mytable = setmetatable({bar = "1"}, mt)mt.__index = function(table, key) return "default"endmt.__newindex = function(table, key, value) rawset(tab...原创 2019-03-04 16:33:34 · 384 阅读 · 0 评论 -
lua闭包中的尾调用
网上大部分关于闭包的例子如下:function test() local i=0 return function()//尾调用 i+=1 return i end end c1=test() c2=test()//c1,c2是建立在同一个函数,同一个局部变量的不同实例上面的两个...原创 2019-03-30 14:24:42 · 243 阅读 · 0 评论