joaohd 200 Postado Março 23, 2011 Share Postado Março 23, 2011 (editado) Material de Apoio VII Funções e return Ao criarmos nossos códigos lua, às vezes precisamos de funções ou procedimentos para agilizar o trabalho ou resolver algum problema. Aprenderemos agora, como criar estas funções e também algumas técnicas para obter o máximo de desempenho delas. Por não ser uma linguagem fortemente tipada - apenas valores possuirem tipos -, as funções em lua podem ser escritas de diversas formas. Observe a estrutura básica delas: NomeDaFuncao = function(argumentos) function NomeDaFuncao(argumentos) function(argumentos) A segunda estrutura é o que chamamos de sintax sugar - açucar sintático -, que nada mais é que a primeira estrutura organizada da forma convencional a que estamos acostumados. Entretanto, se observarmos a terceira estrutura, nossa função não tem nome!! Mas como trabalharemos com ela então? Bom, neste tipo de função, trata-se de modo especial, passando-a como um argumento para outra função, assim: print(function() return "Isto será repassado como argumento." end) No exemplo acima, podemos observar tambem o uso do return, retornando uma string. Mas para quê serve esta estrutura?? O return não faz nada além de nos mostrar o resultado da função. Uma função sem return não apresentará um resultado. Podemos retornar qualquer valor em lua. Observe: function ab() -- Retorna uma string return "Esta retorna string" end function cd() -- Retorna um número return 123 end function ef() -- Retorna um booleano return true end function gh() -- Retorna uma tabela return {} end function ij() -- Retorna outra função return function ab() end Quando o return é encontrado, a função é encerrada e o valor é retornado. Entendido o return, passemos a uma nova fase: a recursividade. Em Ciência da computação, a recursividade é a definição de uma subrotina (função ou método) que pode invocar a si mesma. Trocando em miúdos, seria repetir a mesma instrução várias vezes com o resultado desta mesma instrução. Vejamos um exemplo: function fact(n) if n == 0 then return 1 else return n * fact(n - 1) end end Analisando passo a passo, a execução se daria assim: Suponhamos n = 5; No primeiro instante, teriamos um retorno 5*4 e nosso n passaria a ser 4. No segundo instante, teriamos um retorno de 5*4*3 e n passaria a ser 3. No terceiro instante, teriamos um retorno de 5*4*3*2 e n passaria a ser 2. No quarto instante, teriamos um retorno de 5*4*3*2*1 e n passaria a ser 0. Como temos um condicional dizendo que caso n seja igual a 0 retorne 1, teriamos: 5*4*3*2*1*1 = 120 Este é um exemplo do uso da recursividade. Créditos Função fact : Manual de referência lua 5.1 Definição recursividade : Wikipedia No mais, é isso. flw Editado Março 23, 2011 por apocarai Link para o comentário Compartilhar em outros sites More sharing options...
Dudu08267 7 Postado Março 24, 2011 Share Postado Março 24, 2011 First hehe Otimo tutorial apocarai, gostei eu estou tentando aprender script mas e fods(na minha opniao) n sei onde coloca 1 misero doPlayerAddItem,doRemoveItem '-', mas isso ja deu uma ajudinha. Link para o comentário Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Março 24, 2011 Share Postado Março 24, 2011 (editado) Ótimo tutorial, alguns acham avançado criar funções, mas na verdade é bem fácil, a complexidade da função vai depender do script. Está bem explicado como criar uma função, também intercalou ensinando os valores que as funções podem retornar. Falou também que quando se encontra o return e o break o script requer o end. Qualidade do tutorial esta muito boa, parabéns por ele. EDIT: Se tiver tempo, seria legal um tutorial de WXlua. Editado Março 24, 2011 por Demonbholder Link para o comentário Compartilhar em outros sites More sharing options...
realquimista 5 Postado Abril 30, 2011 Share Postado Abril 30, 2011 no caso do ultimo exemplo seria o calculo de um fatorial, estou correto? Link para o comentário Compartilhar em outros sites More sharing options...
joaohd 200 Postado Abril 30, 2011 Autor Share Postado Abril 30, 2011 Sim. O último exemplo é o cálculo recursivo do fatorial de um número inteiro positivo. flw Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados