0 Проверка, содержит ли TextBox.Text строку в таблице.Но это не работает?Lua - PullRequest
0 голосов
/ 25 апреля 2018

Я создаю скрипт внутри скрипта 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 , которая ссылается на строку , если string.match ....

Есть ли способполучить весь текст в таблице?

Как правильно это сделать?

1 Ответ

0 голосов
/ 25 апреля 2018

О, мальчик, есть что сказать по этому поводу.

Сообщение об ошибке

Да.

Нет, серьезно, ответ - да. Сообщение об ошибке совершенно верно. 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 ...

* На практике это так же хорошо, как и первое решение, если у вас есть несколько элементов в вашей таблице. Это становится уместным только тогда, когда у вас есть несколько сотен записей или , ваш код должен работать максимально быстро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...