Jump to content
Sign in to follow this  
Antharaz

Entendendo ipairs

Recommended Posts

Antharaz    4
Antharaz

Pré-requisitos:

 

- Conhecer tables

- Ter um senso mínimo de lógica de programação

 

 

 

 

Início

 

Bem, muitos vêem o mock e outros usando a função ipairs e não sabem como que ela funciona... espero tirar muitas dúvidas neste tópico...

 

:laugh:

 

Vamos parar de enrolar e começar.

 

 

 

 

 

Usarei a tabela abaixo nos exemplos:

 

local nomedatabela = {"Antharaz",5,"Exemplo","asdrubadeitabebuia"}

 

 

 

Várias vezes temos que fazer a interação sobre uma tabela inteira, seja para imprimí-la ou para outros fins, usando algum laço de repetição como for, while ou repeat. Se você não entendeu ainda o que eu disse, vou escrever de outro jeito: várias vezes temos que acessar todos os dados/valores dela. Um exemplo disto é o abaixo:

 

 

 

[b]for [color="Lime"]x[/color] = 1,[color="DarkOrchid"]#[/color][color="Blue"]nomedatabela[/color] do
   print("O valor numero "..[color="Lime"]x[/color].. " da tabela e: " ..[color="Blue"]nomedatabela[/color][[color="Lime"]x[/color]] )
end[/b]

 

 

ou

 

 

[b][color="Lime"]x[/color]=1
while [color="Lime"]x[/color] ~= ([color="DarkOrchid"]#[/color][color="Blue"]nomedatabela[/color] +1) do
   print("O valor numero "..[color="Lime"]x[/color].. " da tabela e: " ..[color="Blue"]nomedatabela[/color][[color="Lime"]x[/color]] )
   [color="Lime"]x[/color] = [color="Lime"]x[/color]+1
end[/b]

 

 

Algumas explicações:

 

O #nomedatabela retorna o último índice da tabela.

 

 

Como o próprio nome ja diz, em nomedatabela você colocará o nome da sua tabela.

 

 

Usei o x para ser o valor do índice da tabela.

 

 

Voltando

 

 

 

O resultado seria assim:

 

 

O valor numero 1 da tabela e: Antharaz

O valor numero 2 da tabela e: 5

O valor numero 3 da tabela e: Exemplo

O valor numero 4 da tabela e: asdrubadeitabebuia

 

 

Usando o in ipairs( nomedatabela ), o índice da tabela irá ser atribuído ao primeiro parâmetro(no caso x) e o valor do índice x para o segundo parâmetro, que no caso você o verá no exemplo a seguir:

 

 

[b]
for [color="Red"]x[/color],[color="DarkOrange"]a[/color] [color="DeepSkyBlue"]in ipairs[/color]( [color="Blue"]nomedatabela[/color] ) do
   print("O valor numero "..[color="Red"]x[/color].. " da tabela e: " ..[color="DarkOrange"]a[/color] )
end[/b]

 

 

Mais algumas explicações:

 

 

O x é a primeiro parâmetro no qual será atribuído o índice da tabela e o a será o segunda parâmetro no qual será atribuído o valor daquele índice.

 

 

Voltando

 

 

 

Ficando no final com o mesmo resultado:

 

 

O valor numero 1 da tabela e: Antharaz

O valor numero 2 da tabela e: 5

O valor numero 3 da tabela e: Exemplo

O valor numero 4 da tabela e: asdrubadeitabebuia

 

 

 

PS:.. o print fará com que seja imprimido a frase no CONSOLE e não ingame.

Edited by Antharaz

Share this post


Link to post
Gpwjhlkdcf    21
Gpwjhlkdcf

Muito bom cara, mas podia ter explicado o pairs também. O ipairs pega somente valores com índices numéricos, já o pairs pega qualquer valor. Isso tem vantagens, como no exemplo abaixo:

function teste(...)
   for index, value in pairs(arg) do
     print(index .. ", " .. value)
   end
 return true
end
teste("aaa", "bbb", "ccc")

Escreveria:

1, aaa

2, bbb

3, ccc

n, 3

 

Se não quisermos pegar o n, basta usar o ipairs no lugar de pairs, ja que n é um índice de string:

function teste(...)
   for index, value in ipairs(arg) do
     print(index .. ", " .. value)
   end
 return true
end
teste("aaa", "bbb", "ccc")

Escreveria:

1, aaa

2, bbb

3, ccc

Movido.

Edited by Mickfern

Share this post


Link to post
Antharaz    4
Antharaz

obrigado por completar rsrs eu realmente ia colocar depois junto com as diferenças de desempenho usando cada um entre ipairs,pairs,for e while.

 

uhull Skyen gostou de um tutorial meu *-* \o/

Share this post


Link to post
Lo Deragon    0
Lo Deragon

bom o tutorial, mas ainda assim prefiro usar "for i = 1,#tabela do"

obs: disse que nem sabia pra mim no msn né? :/

Share this post


Link to post
Sinister    0
Sinister

/\

Mas ta usando for riairairaira

for k, v in pairs(table) do

 

#topic

good tuto

Share this post


Link to post
Antharaz    4
Antharaz

@Lo Deragon

 

eu não sabia quando te falei...

 

a questão é que eu aprendo rápido, sem contar que estou apenas relembrando o que já sabia já que eu fiquei 3 anos fora .-.

 

 

@Sinister

 

Dedicada para você rsrs

 

@all

 

A diferença está na velocidade

Share this post


Link to post
Roku    0
Roku

atéeeee que enfim

um tutorial bom de pairs e ipairs

=]

sabia tudo menos o q o skyen falo,

obigado gostei muito faça mais tutos =]

Share this post


Link to post
Notorious    1
Notorious

Err, nao gostei muito, ta um pouco mal explicado, e voce nao explicou o verdadeiro significado do ipairs e do pairs ..

 

Mas em geral da pra entender como usar

Share this post


Link to post
D u k e e H    0
D u k e e H

nossa, complicado isso ai

o.o

futuramente eu aprendo a usar

;D

Share this post


Link to post
Dean    1
Dean

for x,a in ipairs( nomedatabela ) do

print("O valor numero "..x.. " da tabela e: " ..a )

end

 

for x = 1,#nomedatabela do

print("O valor numero "..x.. " da tabela e: " ..nomedatabela[x] )

end

 

Desses dois modos ficaria igual ou ganharia em desempenho?

Share this post


Link to post
Antharaz    4
Antharaz

@Iurimandello

 

malz a demora rsrs

 

a diferença seria o desempenho...

 

=x

 

sem contar que poderia ser usado em outros casos melhor que for...

Share this post


Link to post
coca colinha    0
coca colinha

poderia por prints do processo ? to meio perdido ..

 

vlw

Share this post


Link to post
Pandá s2    0
Pandá s2

Interessante Brother, deu para entender bastante!!

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
  • Recently Browsing   0 members

    No registered users viewing this page.

×