Jump to content
Sign in to follow this  
Socket

Funções Python em Lua

Recommended Posts

Socket    0
Socket

Bom, eu to aprendendo Python, ai vi umas funções que eu gostei então resolvi fazê-las em Lua: range e filter.

 

Antes que os "Pytheiros" forem usar a função range no for, eu digo: não funcionará, pois eu refiz a função apenas, não modifiquei o for.

 

Pra quem não conhece as funções:

 

range([i,] j[, c]): Ela refaz uma das estruturas do for em lua:

for i = i, j, c do

O range em Python começa em zero, pois os index começam em 0:

print range(10)
0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Como em Lua os index começam em 1 lógico que a minha função também vai começar em 1.

 

filter(function, sequence): function é uma função que recebe um elemento de sequence - que é uma tabela - como argumento. Se function retornar true, este elemento é adcionado em uma tabela que é o valor retornado da função:

function f(x)
   return x % 2 == 0
end

print(unpack(filter(f,range(10))))

2, 4, 6, 8, 10

Antes que me perguntei porque coloquei range 10 ali sendo que a função pede uma tabela. A função range retorna uma tabela o\.

 

Isso tampém poderia ser indicado assim:

function f(x)
   return x % 2 == 0
end

print(unpack(filter(f,{1,2,3,4,5,6,7,8,9,10})))

Agora as funções:

function range(start, stop, inc)
   start, stop, inc = start and stop and start or 1, start and stop and stop or start, inc or 1
   local result = {}
   for i = start, stop, inc do
       table.insert(result, i)
   end
   return result
end

function filter(comp, sequence)
   local result = {}
   for i, v in ipairs(sequence) do
       if comp(v) then
           table.insert(result, v)
       end
   end
   return result
end

Bom, eu só as fiz pois eu gostei delas.

Share this post


Link to post
Share on other sites
Roku    0
Roku

legal hihihi =)

eu nm curto muito phyton, só fiz jogo da velha lá aksoaskopaks

interessante essa ideia de recriar funções, vou tentar tambem

Share this post


Link to post
Share on other sites
Elwyn    106
Elwyn

Socket sua bix*, sempre fazendo coisas anormais para um garoto gênio de 11 anos. '-'

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×