Эффективность моей работы с таблицами 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 если ключ является действительным идентификатором

Другие вопросы по тегам