Modulo:Enum/man
Questa è la pagina di documentazione per Modulo:Enum
Questo modulo implementa la classe Enum con cui si possono creare enumerazioni. È un metamodulo pensato per essere usato da altri moduli.
Esempio d'uso
modificaSi importa il modulo:
local Enum = require('Modulo:Enum')
Si crea un enum:
local Option = Enum:new('nome identificativo', {
OPTION_1 = {
value = 'opzione 1'
},
OPTION_2 = {
value = 'opzione 2'
}
})
-- metodo per trovare la costante in base al valore
function Option:findByValue(value)
return self:findBy('value', value)
end
A questo punto si usa l'enum tenendo a mente che:
-- supera il test
assert(Option.OPTION_1 == Option:findByValue('opzione 1'))
-- supera il test
assert(Option == Enum['nome identificativo'])
Si può anche decidere di esporre l'elenco delle costanti:
local p = {}
-- entrypoint per ottenere le costanti di un qualsiasi enum
function p.list_constants(frame)
local enum_id = frame.args[1]
local constants = {}
for _, constant in pairs(Enum[enum_id]) do
table.insert(constants, constant.value)
end
return table.concat(constants, ', ')
end
return p