11
Funções • Declaração function nomedafunção (arg_1, arg_2, ..., arg_n) corpoDaFunção end

Funções

  • Upload
    wes

  • View
    36

  • Download
    1

Embed Size (px)

DESCRIPTION

Funções. Declaração function nomedafunção (arg_1, arg_2, ..., arg_n ) corpoDaFunção end. Funções. Exemplo function foo (a, b) local x = a or 1 -- x recebe o valor padrão quando a e um valor falso local y = b or 1 -- y recebe o valor padrão 1 quando b e um valor falso - PowerPoint PPT Presentation

Citation preview

Page 1: Funções

Funções

• Declaraçãofunction nomedafunção (arg_1, arg_2, ...,

arg_n)corpoDaFunçãoend

Page 2: Funções

Funções Exemplofunction foo (a, b)

local x = a or 1 -- x recebe o valor padrão quando a e um valor falsolocal y = b or 1 -- y recebe o valor padrão 1 quando b e um valor falsoreturn x + y, x * y

End Chamada

s, p = foo (3, 4) -- a e 3 e b e 4print (s, p) --> 7 12s, p = foo (2) -- b e nil e y e inicializado com 1print (s, p) --> 3 2

Page 3: Funções

Funções

• Número variável de parâmetrosfunction maior3 (...)

for i, v in ipairs {...} doif #v > 3 then

print (v)end

endend

Page 4: Funções

Funções

• Retornando um único valor

• avaliando uma lista de expressões, obtém-se somenteo primeiro valor de retorno de cada membro da lista, com exceção da ultima expressão, que pode retornar múltiplos valores normalmente

a, b, c, d = foo (1, 2), foo (3, 4), foo (5, 6)print (a, b, c, d) --> 3 7 11 30

Page 5: Funções

Funções

• Valores de Primeira Classe

• Funções em Lua são valores de primeira classe, o que quer dizer que podemos passar funções como argumentos para outras funções, bem como retornar funções.function map (f, t)

for k, v in pairs (t) dot [k] = f (v)

endend

Page 6: Funções

Funções

• Fechos

• sempre que Lua executa a definição de uma função, a função é instanciada (ou fechada)

• fecho => valor final da expressão

Page 7: Funções

Tabelas

• Único mecanismo de estruturação de dados em Lua

• Implementam diretamente arrays associativos e arrays numéricos

• Podem ser usadas para implementar conjuntos e grafos

• Usadas também para representar registros, objetos e módulos Lua

Page 8: Funções

Tabelas

• Manipulando Tabelaslocal t = {}for i=1, 3 do

table.insert (t, i)end

Oulocal t = {}for i=1, 3 do

t [i] = iend

Ou aindalocal t = {}

for i=1, 3 dot [#t+1] = iend

Operador #local t = {"a", "b", "c"}print (#t) --> 3Retorna o tamanho da Tabela

Page 9: Funções

Tabelas

• Programação OO em Lua

• Lua não é uma linguagem orientada a objetos• Porém provê mecanismos que tornam

possível a programação orientada a objetos

Page 10: Funções

Tabelas• Programação OO em Lua• Uso de protótipos• Classes

Rectangle = {width = 0,height = 0}

• Construtoresfunction Rectangle.new (self, o)o = o or {}setmetatable (o, self)self.__index = selfreturn oend

Page 11: Funções

Tabelas• Herança

Cuboid = Rectangle:new ({depth=0})function Cuboid:area ()return 2 * (self.width * self.height + self.width * self.depth +self.depth * self.height)endfunction Cuboid:volume ()return self.width * self.height * self.depthendlocal c1 = Cuboid:new ()print (c1:area ()) --> 0local c2 = Cuboid:new {width=1, height=2, depth=5}print (c2:area ()) --> 34print (c2:volume ()) --> 10