Эффективность моей работы с таблицами Lua
У меня есть вопрос о том, как я собрал этот фрагмент кода Lua. Скажем, есть функция, подобная приведенной ниже, содержащая 200 myTable
таблицы, где имена расположены в алфавитном порядке:
function loadTable(x)
local myTable
if x == "aaron" then myTable = {1,2,3,4,5,6,7,8,9,0}
elseif x == "bobby" then myTable = {1,3,3,4,5,8,7,8,9,1}
elseif x == "cory" then myTable = {1,2,3,3,3,6,7,8,9,2}
elseif x == "devin" then myTable = {1,2,3,4,5,2,3,4,9,0}
...
else
print("table not available")
end
return myTable
end
и теперь я хочу найти таблицу, соответствующую x == "zac"
(который случается где-то в конце). Я использую эту строку кода:
local foundTable = loadTable("zac")
Разве это не эффективно? Если ему нужно найти таблицу в самом конце функции, он должен пройти через все предыдущие строки кода. Есть ли способ более эффективно кодировать это в lua и быстрее найти нужную таблицу??
1 ответ
Это может стать намного быстрее при использовании... таблицы!
Просто создайте таблицу, ключи которой - это имя человека, а значения - это таблица, которую вы хотите загрузить, например:
local tables = {
john = {1,2,3,4,5,6,7,8,9,0},
peter = {1,3,3,4,5,8,7,8,9,1},
william = {1,2,3,3,3,6,7,8,9,2},
victoria = {1,2,3,4,5,2,3,4,9,0}
--...
}
Тогда вместо звонка loadTable("richard")
просто используйте tables["richard"]
или же tables.richard
если ключ является действительным идентификатором