Lua中语法糖(冒号)的奇怪行为

Par*_*rki 1 lua function syntactic-sugar lua-table

function string.test(s)
    print('test')
end

a = 'bar'
string.test(a)
a:test()
Run Code Online (Sandbox Code Playgroud)

一切都很好,直到下一个例子.

function table.test(s)
    print('test')
end

b = {1,2,3}
table.test(b)
b:test() -- error
Run Code Online (Sandbox Code Playgroud)

为什么我收到错误?
它在琴弦上工作得很好.

dau*_*tor 5

默认情况下,表没有metatable,就像字符串一样.

尝试改为:

function table.test(s)
    print('test')
end

b = setmetatable({1,2,3}, {__index=table})
table.test(b)
b:test() -- error
Run Code Online (Sandbox Code Playgroud)