Ir para conteúdo

#5 - aula de scripting lua - funções


Poccnn

Posts Recomendados

Palavras e caracteres reservados

 

Link da aula anterior, caso não tenha lido.

 

aulaLogo.jpg

 

Palavras e caracteres reservados que será usada nessa aula:

 function ( ) return end local

 

 

A palavra “function” serve para criar uma função, ou seja, um bloco de instruções que irá fazer algo.

Ela é composta majoritariamente pela palavra “function”, um nome para essa função (que pode ser omitido, mas assim sendo não poderá ser chamado posteriormente), depois entre parêntesis ficam os parâmetros dessa função; ela pode ter em seu bloco o uso da palavra “return” que serve para retornar valores (ou nil) para quem chamou a função e a palavra “end” que finaliza o bloco da função.

 

 

A função cria um bloco e dentro desse bloco podem-se alocar diversas instruções dependendo apenas da finalidade da função.

 

function nomeDaMinhaFuncao(parametro1,parametro2,quantosParametrosEuQuiser,quantosParametrosEuPrecisar)

--corpo da função. Na qual fica todas as instruções de afazeres dessa função (finalidade da função).

 

          return -- não é obrigatório seu uso. Usa-se apenas quando se faz necessário para o programa; nesse caso ele retornou nil (nulo).

 

  end -- obrigatório para fechar o bloco da função.

 

 

Um exemplo de função e uso do return:

-- palavra reservada, nome da função, parâmetros dela.

 

 function somar(a,b)

return a+b -- retorno de valor.

end -- finaliza o bloco da função.

print(somar(10,20)) >> 30

 

 

Quando a função “somar” é chamada, a palavra reservada return retorna a quem chamou a função um valor ou uma serie de valores.

 

 

Um exemplo do uso da função sem o uso do return.

function imprimir(txt)

print(txt)

end

 

 

Um exemplo de uma função que retorna diversos valores:

function ret(num)

return true,num*num,”retornando uma string”

end

Nesse caso, essa função retorna três valores: o primeiro é um boolean (true); o segundo é a multiplicação do parâmetro “num” por ele mesmo; o terceiro é uma string.

 

Obs.: Em outra aula desse modulo, será tratado como pegar os valores múltiplos retornados por uma função.

 

Funções podem fazer do uso da recursividade, que nada mais é do que chamar a si próprio.

function rec(param,n)

n = not n and 1 or n

         if n < 2 then –uma forma de controlar a quantidade de vezes que será executada a recursividade.

                   return rec(param*2,n+1) -- recursividade.

         end

return param*2 -- Para a recursividade.

end

Quando se faz do uso da recursividade, tu tens que criar alguma forma de parar a chamada dela.

 

 

Um exemplo de uma função sem nome:

function(arg) end

Funciona e é muito usado em programação. Serve para criar um bloco na qual terá instruções, mas que não será usado posteriormente.

 

 

Quando não se sabe ao certo a quantidade de parâmetros que terá uma função, fazemos do uso dos três pontos (reticências) para isso.

function naoSeiQuantosParametrosTemEssaFuncao(...)

parametros = {...} -- insere tais parâmetro em uma tabela para que seja pego os argumentos passados a função.

      for k,v in pairs(parametros) do -- percorre a tabela com os argumentos passados a função

            print(k,v) -- imprime os valores passados a função

     end

end

naoSeiQuantosParametrosTemEssaFuncao(‘oi’,’lua’)) >> oi lua

naoSeiQuantosParametrosTemEssaFuncao(“idade”,20,”nome”,”Vladimir”) >> idade 20 nome Vladimir

 

 

Tu podes também mesclar declarações de parâmetros com os três pontos (reticências):

function doisParametrosDeclarados(nome,idade,...)

         return “nome: ”..nome, “idade: ”..idade,unpack({...}) -- A função unpack retorna os restantes dos argumentos passados a função.

end

print(doisParametrosDeclarados(“Vladimir”,20, “anos”) >> nome: Vladimir idade: 20 anos

print(doisParametrosDeclarados(“Vladimir”,20, “anos”, “um novo parâmetro”, “e assim sucessivamente”) >> nome: Vladimir idade: 20 anos um novo parâmetro e assim sucessivamente

 

 

Explicando um pouco sobre o uso da palavra reservada “local” em funções:

Toda função declarada assume um valor global, ou seja, é visível por outros scripts; quando se declara local, essa função só é visível apenas por aquele script.

local function funcaolocal() end

 

Agora em seu código criado em outras aulas, insira nele pelo menos uma função.

Inté a próxima aula.

aulaLogo.jpg.124b753ff5dd167a9527e0ed3c1fb837.jpg

Editado por Poccnn
Melhoria nas explicações sobre funções
Link para o comentário
Compartilhar em outros sites

  • Poccnn featured e pinned this tópico

Espero que esteja certo

 

 

 


function verificação(servidor,nível,...)

     return "Meu servidor é:" ..SAO, "e sou nível:" ..20,({...})
end


print(verificação("SAO","20") >> Meu servidor é: SAO e sou: nível 20

 

 

oque é  boolean ?

oque é  unpack  ?

 

se eu fiz alguma coisa de errado me explique por favor...

Editado por CalistoKing
Link para o comentário
Compartilhar em outros sites

23 minutos atrás, CalistoKing disse:

Espero que esteja certo

 

  Ocultar conteúdo

 

 

function verificação(servidor,nível,...)

 

     return "Meu servidor é:" ..SAO, "e sou nível:" ..20,({...})

end

 

 

print(verificação("SAO","20") >> Meu servidor é: SAO e sou: nível 20

 

 

oque é  boolean ?

oque é  unpack  ?

 

se eu fiz alguma coisa de errado me explique por favor...

Não use acentuação, apenas caracteres alfanuméricos.

Não coloque uma tabela entre cochetes.

Sobre boolean:

 

Sobre a função unpack, isso será tratado em outra aula.

Link para o comentário
Compartilhar em outros sites

@Poccnn obrigado, mil perdões, apenas tinha esquecido sobre o boolean, eu deveria ter procurado nas aulas anteriores...

 

No caso ficaria assim ???

 

 


function verificacao(servidor,nivel,...)
     return "Meu servidor e:" ..SAO, "e sou nivel:" ..20
end

print(verificacao("SAO","20")) >> Meu servidor e: SAO e sou: nivel 20

 

 

Editado por CalistoKing
Link para o comentário
Compartilhar em outros sites

 

Achei bem fraco sua "aula", n se aprofundou em nada, parece que foi escrito em 10 minutos, tem informações erradas, pelo que reveja e reorganize seu tópico para que as pessoas atrás desse tipo de conteúdo possam ter uma informação que vai tirar suas duvidas e não uma que vai criar mais.

 

 

 

 

 

Recursivo precisa ter 2 parâmetro ?, que regra é essa que eu nunca vi.

 

 

 

 

 

" Tu podes também mesclar declarações de parâmetros com os três pontos: " ?, isso se chama concatenação e não é exclusivo das funções.

 

 

 

 

 

Achei muito muito fraco essa "aula".

 

 

Link para o comentário
Compartilhar em outros sites

Em 29/04/2017 at 23:30, BananaFight disse:

Achei bem fraco sua "aula", n se aprofundou em nada, parece que foi escrito em 10 minutos, tem informações erradas, pelo que reveja e reorganize seu tópico para que as pessoas atrás desse tipo de conteúdo possam ter uma informação que vai tirar suas duvidas e não uma que vai criar mais.

 

Recursivo precisa ter 2 parâmetro ?, que regra é essa que eu nunca vi.

 

" Tu podes também mesclar declarações de parâmetros com os três pontos: " ?, isso se chama concatenação e não é exclusivo das funções.

 

Achei muito muito fraco essa "aula".

 

Obrigado pela critica construtiva. estarei reformulando essa aula para que fique melhor. obrigado.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...