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

modifica

Si 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