Jump to content

[PEDIDO DE TUTORIAL] Pra serve for k,v...?


noonbr

Recommended Posts

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

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 by Lord Henry
  • Thanks 1
Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...