Lua é bom para estruturas de dados e algoritmos?
Para aprendê-los, surpreendentemente bom: com apenas tabelas como matéria-prima, toda estrutura fica explícita, e o código continua curto. O porém é que as tabelas perdoam erros em silêncio: por convenção, os arrays começam em 1, uma chave ausente devolve nil em vez de um erro, e o operador de tamanho #t só é confiável em uma sequência sem buracos de nil. Poucas entrevistas são feitas em Lua, então, se uma entrevista é o seu objetivo, os pacotes de entrevista também são oferecidos na linguagem que você vai usar nela.
Como construir uma pilha e uma fila a partir de uma tabela Lua?
Uma pilha é a parte de array usada por uma ponta: table.insert(t, x) empilha e table.remove(t) desempilha. Uma fila exige mais cuidado, porque table.remove(t, 1) desloca todos os elementos restantes uma posição para baixo, então cada remoção da fila é O(n). Em vez disso, mantenha dois índices, first e last: adicione em last + 1, leia em first, coloque nil nessa posição e avance, e a remoção passa a ser de tempo constante. No passo um você constrói as duas.
Por que #t às vezes dá o tamanho errado em Lua?
Porque # devolve uma borda da tabela: um índice n em que t[n] não é nil e t[n + 1] é. Uma sequência de verdade tem exatamente uma borda, o seu tamanho; coloque um nil no meio e pode haver várias, e # pode devolver qualquer uma delas. Então nunca guarde nil em um array que você mede com # e, em estruturas com lacunas, como uma fila com dois índices, controle o tamanho você mesmo.
Estruturas de dados importam para scripts no Roblox?
Sim, assim que um jogo cresce além de um punhado de objetos. Um inventário é uma tabela hash, uma ordem de spawn ou de turnos é uma fila, uma lista de cooldowns pode ser uma fila de prioridade, e encontrar um caminho em um mapa é uma busca em grafo. Luau, a linguagem em que os scripts do Roblox são escritos, deriva de Lua 5.1 e mantém as tabelas, os arrays que começam em 1 e o operador #, então o que você constrói aqui passa direto para lá.
Quais cursos desta trilha não são ensinados em Lua?
Três: programação dinâmica e a série de entrevistas em Python, ensinadas em Python, e manipulação de bits, ensinada em C++. Eles aparecem listados depois dos passos, cada um com um link que o abre na própria linguagem. Em Lua, a memoização usa uma tabela; os operadores bit a bit só chegaram em Lua 5.3, que tem os &, |, << e >> do C++ e escreve tanto o XOR quanto o NOT como ~.
Preciso saber Lua antes de começar esta trilha?
Tabelas, funções, laços e variáveis locais, no mínimo; metatabelas ajudam se você quer estruturas que se comportem como objetos. Se isso for novidade, o curso de Lua da Coddy cobre esses temas primeiro, de graça, e esta trilha continua de onde ele termina.