noonbr Posted November 7, 2019 Share Posted November 7, 2019 Iniciei no script faz pouco tempo. Queria saber qual é a função de for k,v (table) , para que serve, for só pega dois valores de uma tabela? Exemplos que posso utilizar com for , obrigado desde de já. Quem puder me ajuda receberá thanks. Link to comment
Other Languages Moderators Lord Henry Posted November 8, 2019 Other Languages Moderators Share Posted November 8, 2019 (edited) for é um loop. Se vc tivesse estudado lógica de programação primeiro, saberia disso. Spoiler Os exemplos abaixo podem ser testados client-side ou server-side. -- LOOP NUMÉRICO for i=1, 10 do -- Faz um loop que incrementa o i em +1 a cada execução e vai até 10. outputChatBox (i) -- Vai executar 10 vezes, na primeira vez o i vale 1, depois vale 2, depois 3 e assim por diante até atingir o limite de 10. end for i=3, 10 do -- Faz um loop que incrementa o i em +1 a cada execução e vai até 10. outputChatBox (i) -- Vai executar 8 vezes, na primeira vez o i vale 3, depois vale 4, depois 5 e assim por diante até atingir o limite de 10. end for i=1, 10, 2 do -- Faz um loop que incrementa o i em +2 a cada execução e vai até 10. (neste exemplo ele para em 9, pois o valor seguinte ultrapassa o limite de 10) outputChatBox (i) -- Vai executar 5 vezes, na primeira vez o i vale 1, depois vale 3, depois 5 e assim por diante até atingir o limite de 10. end for i=2, 10, 5 do -- Faz um loop que incrementa o i em +5 a cada execução e vai até 10. (neste exemplo ele para em 6, pois o valor seguinte ultrapassa o limite de 10) print (i) -- Vai executar 2 vezes, na primeira vez o i vale 2, depois vale 7 e a terceira vez não é executada pois valeria 12. end -- LOOP GENÉRICO (ou iterador) local myTable = {"um", 2, "03"} -- Tabela qualquer com elementos de tipos diferentes. Note que declarei ela sem índices, mas o MTA considera ela automaticamente como essa abaixo: (indexar = colocar índices, os números que estão entre os colchetes []) --[[O fato de estar na vertical ou na horizontal é irrelevante, coloquei na vertical apenas para facilitar o entendimento. local myTable = { [1] = "um", [2] = 2, [3] = "03" } ]] for i, value in ipairs (myTable) do -- Faz um loop que incrementa o i em +1 a cada execução. Termina quando não existir um índice igual ao i na myTable ou quando não há item nenhum neste índice. (vale lembrar que ipairs só funciona para tables que tenham os índices como inteiros) outputChatBox (value) -- Executa 3 vezes, pois quando o i for 4, não irá executar por não existir nenhum item com índice [4] na myTable. Na primeira execução, vai mostrar "um", depois "2" e por fim "03". end -- outro exemplo com índices não inteiros: local myTable = { ["AB"] = 1, ["01"] = "2", ["Sei lá"] = "03", [3.14] = "pi" } for i, value in pairs (myTable) do -- Faz um loop que repete o número de itens que existem em myTable. Se a table tem 4 itens, o loop executa 4 vezes. outputChatBox (i) -- Mostra um dos índices a cada execução sem seguir necessariamente a ordem que está em myTable. Pode mostrar "Sei lá" na primeira vez, depois "AB" na segunda, etc. O pairs não segue a ordem que está em myTable, pois não é possível determinar qual índice é maior que o outro. O mesmo ocorre se fizer com o 'value'. end -- exemplo com ERRO proposital local myTable = { -- Table com um item ausente. [1] = "um", [2] = 2, [3] = "03", [4] = nil, [5] = "5" } for i, value in ipairs (myTable) do outputChatBox (i) -- Vai executar somente 3 vezes. Pois quando o índice for 4, o item não existe e ele não consegue executar, finalizando o loop no 3. end -- Outro exemplo com erro proposital local myTable = { -- Table com um índice ausente. [1] = "um", [2] = 2, [3] = "03", [6] = "errou", [5] = "5" } for i, value in ipairs (myTable) do outputChatBox (i) -- Vai executar 3 vezes, pois quando o i for 4, não encontrará o índice [4] finalizando o loop no índice 3. end -- Exemplo final local myTable = { -- Table com índices fora de ordem. [1] = "um", [3] = 2, [2] = "03", [5] = "quatro", [4] = "5" } for i, value in ipairs (myTable) do outputChatBox (i) -- Vai executar 5 vezes, na ordem dos índices. (não importa a ordem que foram declarados). Na primeira execução vai mostrar "1", depois "2", depois "3" e assim por diante até o 5. end Edited November 8, 2019 by Lord Henry 1 Link to comment
[M]ister Posted November 10, 2019 Share Posted November 10, 2019 Não está esquecendo de nada @GM_Goulart ? On 07/11/2019 at 13:23, GM_Goulart said: Quem puder me ajuda receberá thanks. Pena que já lhe ajudaram, juro que fiquei super tentado com essa oferta. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now