gpt4 book ai didi

lua - 如何将方法添加到表类型?

转载 作者:行者123 更新时间:2023-12-04 10:05:02 27 4
gpt4 key购买 nike

如何将方法添加到表类型?我正在尝试编写一种搜索表值的方法。到目前为止我有。

function table:contains(value)
for _, v in ipairs(self) do
if v == value then return true end
end
return false
end

然而,当我尝试执行以下操作时。
t = {'four', 'five', 'six'}
t:contains('five')

我得到了错误。
stdin:1: attempt to call method 'contains' (a nil value)

有什么建议么?

最佳答案

正如其他人所说,您的t是一个简单的表,它只包含以下键值对:[1]='four' , [2]='five' , [3]='six' .

如果你想“扩展” t能够从 table 访问功能模块,您必须使用 __index 设置元表指向table模块。我使用以下功能轻松访问它:

function T(t)
return setmetatable(t, {__index = table})
end

然后您可以按如下方式使用它(感谢语法糖不需要括号):
t = T{'four', 'five', 'six'}
t:insert('seven')
print(t:contains('seven')) --> true

关于lua - 如何将方法添加到表类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10778812/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com