Re: [lua-br] Como importar meus próprios modulos

482 views
Skip to first unread message

Jhonathan Banczek

unread,
Jan 19, 2015, 9:15:09 PM1/19/15
to lua...@googlegroups.com
Não entendi muito bem sua pergunta, mas segue um exemplo, que é o melhor
jeito de entender algo.

No arquivo luamlp.lua contem o código fonte do programa
e no arquivo test_luamlp.lua tem um exemplo do "import" do Lua: o "require"

Eu carrego os dados do meu programa pra uma variável
e uso ela para acessar os recursos:

luamlp = require 'luamlp'


Em 19 de janeiro de 2015 22:43, Weslei Ramos <weslei...@gmail.com> escreveu:
Por exemplo em python quando eu queria encapsular alguma parte do código eu usava import e ele carregava o arquivo e eu chamava as funções e tudo mais. Eu queria saber se há alguma maneira de eu fazer isso em Lua eu vi que da para chamar libs usando require eu queria saber se da para chamar minhas "libs" usando o mesmo ?

--
Lua BR - http://groups.google.com/group/lua-br
---
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para lua-br+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
________________________________________

Atenciosamente
Jhonathan Paulo Banczek

___________________________________

tomas

unread,
Jan 20, 2015, 10:25:45 AM1/20/15
to lua...@googlegroups.com, Jhonathan Banczek
Olá

> Eu carrego os dados do meu programa pra uma variável
> e uso ela para acessar os recursos:
>
> luamlp = require 'luamlp'

A função require não é exatamente como o import de Python. Na verdade,
parece ser bem diferente. require() de Lua é uma simples função, como
qualquer outra (enquanto a construção import de Python parece ser um
comando/statement). O que ela faz é procurar por um arquivo e
executá-lo, retornando seu resultado, se houver.

Nós, programadores Lua, temos por hábito escrever módulos em arquivos
isolados e cuja última linha retorna uma tabela que contém todos os
elementos exportados pelo módulo. Dessa forma o exemplo acima funciona
como esperamos.

Vale resaltar que os módulos Lua não costumam registrar nomes globais,
por isso a atribuição do resultado da require a um nome que normalmente
é uma variável local, como em:

local luamlp = require"luamlp"

>> Por exemplo em python quando eu queria encapsular alguma parte do
>> código eu usava import e ele carregava o arquivo e eu chamava as
>> funções e tudo mais. Eu queria saber se há alguma maneira de eu
>> fazer isso em Lua eu vi que da para chamar libs usando require eu
>> queria saber se da para chamar minhas "libs" usando o mesmo ?

Para completar, a função require serve para encontrar tanto arquivos com
código fonte Lua quanto bibliotecas binárias, tipicamente escritas em C.
Para o programador, não faz muita diferença, pois ele estará repetindo
o mesmo modelo, como em:

local postgres = require"luasql.postgres"

Abraço,
Tomás

Reply all
Reply to author
Forward
0 new messages