为什么我们可以做str:split(",")而不是tab:insert(val)?
我们可以做string.split("1,2,3",",")或("1,2,3"):split(",")并得到相同的结果。
但是tab = {} table.insert(tab, "hi")在tab = {} tab:insert("hi")抛出错误时有效
tab = {} tab:insert("hi"):1: 尝试调用一个 nil 值
这似乎不一致,我做错了什么还是有充分的理由为什么在 Lua 中调用方法不同?
谢谢,
回答
这是因为字符串在 Lua 中有一个默认的元表,而表没有。你可以自己设置元表:
local tab = setmetatable({}, {__index = table})
tab:insert("hi")
print(#tab)
这应该打印 1。有关详细信息,请参阅Lua 手册中的2.4和6.4部分。
THE END
二维码