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