Antharaz 4 #1 Posted February 6, 2010 (edited) 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: AntharazO 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: AntharazO 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 February 6, 2010 by Antharaz Share this post Link to post
Gpwjhlkdcf 21 #2 Posted February 6, 2010 (edited) 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, aaa2, 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, aaa2, bbb 3, ccc Movido. Edited January 24, 2011 by Mickfern Share this post Link to post
Antharaz 4 #3 Posted February 6, 2010 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 #4 Posted February 6, 2010 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 #5 Posted February 6, 2010 /\ Mas ta usando for riairairaira for k, v in pairs(table) do #topic good tuto Share this post Link to post
Antharaz 4 #6 Posted February 7, 2010 @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 #7 Posted February 7, 2010 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 #8 Posted February 7, 2010 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 #9 Posted February 8, 2010 nossa, complicado isso ai o.o futuramente eu aprendo a usar ;D Share this post Link to post
Dean 1 #10 Posted February 8, 2010 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 #11 Posted February 11, 2010 @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 #12 Posted February 11, 2010 poderia por prints do processo ? to meio perdido .. vlw Share this post Link to post
Pandá s2 0 #13 Posted February 12, 2010 Interessante Brother, deu para entender bastante!! Share this post Link to post