Lua中如何创建一个包含长尾关键词的复杂表格?

2026-04-01 19:311阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计228个文字,预计阅读时间需要1分钟。

Lua中如何创建一个包含长尾关键词的复杂表格?

我想在Lua中使用一次写入表(特别适用于LuaJIT+2.0.3)如下:

lualocal tbl=write_once_tbl()tbl[a]='foo'tbl[b]='bar'tbl[a]='baz'assert(false)-- 希望在这种情况下,这像常规表(使用pairs和ipairs工作)一样运行。

我想在Lua中使用一次写入表(特别是LuaJIT 2.0.3),这样:

local tbl = write_once_tbl() tbl["a"] = 'foo' tbl["b"] = 'bar' tbl["a"] = 'baz' -- asserts false

理想情况下,这将像常规表(pairs()和ipairs()工作)一样运行.

__newindex基本上与我想要实现它的方法相反,我不知道任何使用pair()和ipairs()使代理表模式工作的技术.

您需要使用代理表,即一个捕获对实际表的所有访问权限的空表:

function write_once_tbl() local T={} return setmetatable({},{ __index=T, __newindex= function (t,k,v) if T[k]==nil then T[k]=v else error("table is write-once") end end, __pairs= function (t) return pairs(T) end, __ipairs= function (t) return ipairs(T) end, }) end

请注意,__ pairs和__ipairs仅适用于Lua 5.2及更高版本.

Lua中如何创建一个包含长尾关键词的复杂表格?

本文共计228个文字,预计阅读时间需要1分钟。

Lua中如何创建一个包含长尾关键词的复杂表格?

我想在Lua中使用一次写入表(特别适用于LuaJIT+2.0.3)如下:

lualocal tbl=write_once_tbl()tbl[a]='foo'tbl[b]='bar'tbl[a]='baz'assert(false)-- 希望在这种情况下,这像常规表(使用pairs和ipairs工作)一样运行。

我想在Lua中使用一次写入表(特别是LuaJIT 2.0.3),这样:

local tbl = write_once_tbl() tbl["a"] = 'foo' tbl["b"] = 'bar' tbl["a"] = 'baz' -- asserts false

理想情况下,这将像常规表(pairs()和ipairs()工作)一样运行.

__newindex基本上与我想要实现它的方法相反,我不知道任何使用pair()和ipairs()使代理表模式工作的技术.

您需要使用代理表,即一个捕获对实际表的所有访问权限的空表:

function write_once_tbl() local T={} return setmetatable({},{ __index=T, __newindex= function (t,k,v) if T[k]==nil then T[k]=v else error("table is write-once") end end, __pairs= function (t) return pairs(T) end, __ipairs= function (t) return ipairs(T) end, }) end

请注意,__ pairs和__ipairs仅适用于Lua 5.2及更高版本.

Lua中如何创建一个包含长尾关键词的复杂表格?