为什么短呼叫形式不适用于Lua 5.3中的表格?

时间:2015-05-26 22:47:25

标签: lua lua-table metatable

Lua 5.3

这不起作用,为什么?为什么短呼叫表不适用于表?

t = { "a", "b", "c" }
s = t:concat()

这有效......

s = table.concat(t)  

1 个答案:

答案 0 :(得分:2)

string库将其函数导出到所有字符串共享的元表。这就是为什么你可以像str:upper()一样使用string.upper(str)

table库的情况并非如此。您必须手动设置元表。例如,这有效:

local t = { "a", "b", "c" }
t.__index = table
setmetatable(t, t)
local s = t:concat()
print(s)  -- abc