Lua 和方法的困惑

我正在尝试弄清楚如何为我的代码创建方法,这对我来说相当令人困惑

我尝试使用以下代码:

string.testfunc = function(s) print(s) end
a="foo"
a:testfunc() -- 将非字符串值输入函数会导致错误

>foo

然后我尝试了这段代码

table.testfunc = function(s) print(s[1]) end
a={1,2}
table.testfunc(a)

>1

a:testfunc() -- 无论变量的类型如何,这将始终出错

>method 'testfunc' is not callable (a nil value)

为什么我可以在字符串表中创建一个方法,并且对字符串可以很好地工作,但对于表不行?以及为什么使用表创建一个方法无法运行?

原文链接 https://stackoverflow.com/questions/69800173

点赞
stackoverflow用户107090
stackoverflow用户107090

Lua 中的 string 库为所有字符串设置了索引元方法。

Lua 中的 table 库并没有为所有表设置索引元方法,因为表被用来表示对象。通常情况下,同一类对象共享同一个元表。

2021-11-01 18:03:01