Módulo:Argumentos/uso
Esta é a páxina de documentación de «Módulo:Argumentos»
Esta é a subpáxina de documentación de "Módulo:Argumentos". Contén información de uso, categorías e outros contidos que non forman parte do modelo orixinal. Atención: As ligazóns interwiki engádense no Wikidata. |
Este módulo proporciona un procesado sinxelo dos argumentos pasados dende #invoke. É un meta-módulo, é dicir que debe ser usado por outros módulos, e non debe ser chamado directamente. As súas funcións inclúen:
- Eliminación sinxela de espazos dos argumentos e borrado de argumentos en branco.
- Os argumentos poden ser pasados tanto polo frame actual como polo frame pai ó mesmo tempo. (Máis detalles abaixo.)
- Os argumentos poden ser pasados directamente dende outro módulo Lua ou dende a consola de depuración de erros.
- Os argumentos poden ser buscados cando se precisan, o que pode axudar a evitar (algúns) problemas coas etiquetas ref
- Máis funcionalidades poden ser personalizadas.
Uso básico
[editar]Primeiro, vostede precisa cargar o módulo. Este contén unha función, chamada getArgs
.
local getArgs = require('Módulo:Argumentos').getArgs
No escenario máis básico, vostede pode usar getArgs dentro da súa función principal. A variable args
é unha táboa que contén os argumentos de #invoke. (Mirar abaixo para máis detalles.)
local getArgs = require('Módulo:Argumentos').getArgs
local p = {}
function p.main(frame)
local args = getArgs(frame)
-- O código do módulo principal vai aquí.
end
return p
Pola contra, a práctica recomendada é usar a función só para procesar argumentos de #invoke. Isto significa que se alguén chama ó seu módulo dende outro módulo Lua vostede non ten que ter un obxecto frame dispoñible, o que mellora o rendemento.
local getArgs = require('Módulo:Argumentos').getArgs
local p = {}
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
function p._main(args)
-- O código do módulo principal vai aquí.
end
return p
Se vostede quere que varias funcións usen os argumentos, e tamén quere que estean accesibles dende #invoke, pode usar unha función para envolvelos.
local getArgs = require('Módulo:Argumentos').getArgs
local function makeInvokeFunc(funcName)
return function (frame)
local args = getArgs(frame)
return p[funcName](args)
end
end
local p = {}
p.func1 = makeInvokeFunc('_func1')
function p._func1(args)
-- O código da primeira función vai aquí.
end
p.func2 = makeInvokeFunc('_func2')
function p._func2(args)
-- O código da segunda función vai aquí.
end
return p
Limitacións coñecidas
[editar]O uso de metatáboas ten tamén os seus problemas. A maioría das ferramentas de táboas de Lua normais non funcionan correctamente coa táboa de argumentos, incluíndo o operador #
, a función next()
, e as funcións na biblioteca de funcións de táboas. Se o seu módulo precisa usalas, vostede debe usar a súa propia función de procesado de argumentos no canto deste módulo.