Ir para conteúdo

Material De Apoio Vii


joaohd

Posts Recomendados

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 por apocarai
Link para o comentário
Compartilhar em outros sites

First hehe

Otimo tutorial apocarai, gostei :D 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

Ó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 por Demonbholder
Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...