为什么我们可以做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部分。


以上是为什么我们可以做str:split(",")而不是tab:insert(val)?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>