О, мальчик, есть что сказать по этому поводу.
Сообщение об ошибке
Да.
Нет, серьезно, ответ - да. Сообщение об ошибке совершенно верно. a
- табличное значение; Вы можете ясно видеть это на третьей строке кода. string.match
нужна строка в качестве второго аргумента, поэтому она явно вылетает.
Простое решение
используйте цикл for
и проверяйте каждую строку в a
отдельно.
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
Решение лучше *
В Lua, если мы хотим узнать, находится ли один элемент в наборе, мы обычно используем тот факт, что таблицы реализованы в виде хеш-таблиц, то есть они очень быстры при поиске ключей.
Чтобы это работало, сначала нужно изменить внешний вид таблицы:
a = {["test1"] = true, ["test2"] = true, ["test3"] = true}
Тогда мы можем просто индексировать a
строкой, чтобы узнать, содержится ли она в указанном множестве.
if a[text.Text] then ...
* На практике это так же хорошо, как и первое решение, если у вас есть несколько элементов в вашей таблице. Это становится уместным только тогда, когда у вас есть несколько сотен записей или , ваш код должен работать максимально быстро.