我在TextButton脚本中创建一个脚本,它将检查TextBox是否包含表格中的任何单词或字符串。
text = script.Parent.Parent:WaitForChild('TextBox')
label = script.Parent.Parent:WaitForChild('TextLabel')
a = {'test1','test2','test3'}
script.Parent.MouseButton1Click:connect(function()
if string.match(text.Text, a) then
label.Text = "The word "..text.Text.." was found in the table."
else
label.Text = "The word "..text.Text.." was not found in the table."
end
end)
但是它会在 7 行中提供错误 字符串,得到表格。 ,如果是字符串则引用行。匹配....
有没有办法让表格中的所有文字都出现?
做正确的方法是什么?
答案 0 :(得分:1)
哦,小伙子,对此有很多话要说。
是
不,说真的,答案是肯定的。错误消息是完全正确的。 a
是一个表值;你可以清楚地看到第三行代码。 <{1}}需要一个字符串作为其第二个参数,因此它显然会崩溃。
使用string.match
循环并分别检查for
中的每个字符串。
a
在Lua中,如果我们想知道单个元素是否在一个集合中,我们通常会利用表格实现为散列图这一事实,这意味着它们在查找键时速度非常快。
为了实现这一目标,首先需要改变表的外观:
found = false
for index, entry in ipairs(a) do
if entry == text.Text then
found = true
end
end
if found then
... -- the rest of your code
然后我们可以用一个字符串索引a = {["test1"] = true, ["test2"] = true, ["test3"] = true}
来查明它是否包含在集合中。
a
*在实践中,只要您的表中只有几个元素,这与第一个解决方案一样好。只有当你有几百个或条目需要尽可能快地运行时,它才会变得相关。