- Lua 会回收的 table 中的对象
- 具有弱应用 key 的 table
- 具有弱应用 value 的 table
- 具有弱应用 key 和 value 的 table
- 一个table的弱引用类型是通过其元素表中的__mode字段来决定的,这个字段的值应为一个字符串,如果这个字符串中包含字母'k'/'v'那么这个table 的value是弱引用
- 实例代码
-- __mode 字段 'k' 'v' a = {} b = { __mode = "k" } setmetatable( a , b ) -- 现在 'a' 的 key 就是弱应用 key = {} -- 创建第一个key a[key] = 1 key = {} -- 创建第二个key a[key] = 2 collectgarbage() -- 强制进行一次垃圾收集 第一个key被回收了 for k , v in pairs(a) do print(v) end
- 备忘录(memorize)函数
local results = {} function mem_loadstring(s) local res = results[s] if res == nil then -- 是否已记录过 res = assert( loadstring(s) ) -- 计算新结果 results[s] = res -- 存下以备之后复用 end return res end function createRGB( r , g , b ) return { red = r , green = g , blue = b } end local results = {} setmetatable( results , { __mode = "v" }) -- 使value成为弱应用 function createRGB(r , g , b) local key = r .."-" .. g .. "-" .. b local color = results[key] if color == nil then color = { red = r , green = g , blue = b } results[key] = color end return color end
40. Lua 弱应用
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Lua 全教程 本文目录 Lua 简介 Lua 版本 Lua 环境开发工具软件包管理分析和调试 基础概念常量和标识...