string - 为什么我们可以做 str :split (",") but not tab:insert(val)?

标签 string methods lua lua-table

我们可以执行 string.split("1,2,3",",")("1,2,3"):split(",") 并收到相同的结果。

但是 tab = {} table.insert(tab, "hi") 可以工作,而 tab = {} tab:insert("hi") 会抛出错误

tab = {} tab:insert("hi"):1: attempt to call a nil value

这看起来不一致,是我做错了什么还是有充分的理由为什么在 Lua 中调用方法不同?

谢谢,

最佳答案

这是因为Lua中字符串有默认的元表,而表没有。您可以自己设置元表:

local tab = setmetatable({}, {__index = table})
tab:insert("hi")
print(#tab)

这应该打印 1。请参阅 2.46.4 Lua 手册中的章节了解详细信息。

关于string - 为什么我们可以做 str :split (",") but not tab:insert(val)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65282919/

相关文章:

lua - 3d 中圆上的最近点。少了什么东西?

lua - Lua 4.0 中的 "tag"是什么?

c - 删除字符串中所有出现的子字符串

python - 为什么 str.count ('' ) 和 len(str) 给出不同的输出?

java - 嵌套循环导致 OutOfMemory 错误 : Java heap space

java - 为什么类 Car 会存储对象 car 和 car2 的正确信息,但类 Owner 不会存储对象 Owner2 的信息?

c++ - 如何在没有公共(public)构造函数的情况下拥有自己的字符串类?

iphone - 在特定时间调用方法

java - 当我尝试在主要方法 “ArrayStack@6acbcfc0”中执行时,我总是独自得到此消息。

c++ - Luabind: "No matching overload found, candidates:"