问题描述
在Lua中,我看到了一些方法,例如string
和io
类,这些类使您可以自动从表中调用该方法,而无需为此实例化对象,例如: / p>
以下代码:
local tb = {"Hello","World!"}
table.concat(tb)
可以这样写:
local tb = {"Hello","World!"}
tb:concat()
我试图创建一种可以做同样事情的方法:
local tst = {}
function tst:test()
print("test")
end
,但是以下代码不起作用:
local tb = {"Hello","World!"}
tb:test()
仅当我告知代码tb = tst
:
local tb = tst
tb:test()
我的问题是,我有没有办法像第二个示例中那样自动创建适用于字符串或表的方法,而无需实例化类?例如,将我的表格称为表格:MyMethod()
解决方法
我不确定这是否能回答您的原始问题,但是也许可以从评论中回答您的问题将有助于解释问题。
以下代码是如何使用某些方法实例化表的示例。
model_lib_v2.py
local function makeArray()
local a = {}
setmetatable(a,{__index = table})
return a
end
调用基本上使setmetatable
库中的所有函数都可以从新数组访问。这很有用,因为除table
以外的所有table
函数都希望将数组作为其第一个参数。
Vanilla Lua对字符串做类似的事情。所有字符串都以pack
作为它们的元表。
路德还是很重要的>
function makeArray()
return setmetatable({},{__index = table})
end