« Module:Utilitaire » : différence entre les versions
Contenu supprimé Contenu ajouté
make sure the set implementation is correct and sideeffectless |
+ fonction tail |
||
Ligne 1 : | Ligne 1 : | ||
local utils = {} |
local utils = {} |
||
--[[ |
|||
Nombre d'élément dans un dictionnaire |
|||
--]] |
|||
function utils.tablelength(T) |
function utils.tablelength(T) |
||
Ligne 6 : | Ligne 12 : | ||
for _ in pairs(T) do count = count + 1 end |
for _ in pairs(T) do count = count + 1 end |
||
return count |
return count |
||
end |
|||
--[[ |
|||
Nouveau tableau sans le premier élément |
|||
--]] |
|||
function tail(list) |
|||
return { select(2, unpack(list)) } |
|||
end |
end |
||
Ligne 12 : | Ligne 29 : | ||
Une classe destinée à servir d'ensemble pour tester rapidement l'appartenance d'un élément à une liste ou un ensemble |
Une classe destinée à servir d'ensemble pour tester rapidement l'appartenance d'un élément à une liste ou un ensemble |
||
--]] |
--]] |
||
Version du 15 novembre 2015 à 20:01
La documentation de ce module est générée par le modèle {{Documentation module}}.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
local utils = {}
--[[
Nombre d'élément dans un dictionnaire
--]]
function utils.tablelength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
--[[
Nouveau tableau sans le premier élément
--]]
function tail(list)
return { select(2, unpack(list)) }
end
--[[
Une classe destinée à servir d'ensemble pour tester rapidement l'appartenance d'un élément à une liste ou un ensemble
--]]
local Set = {} -- the table representing the class, which will double as the metatable for the instances
Set.__index = Set -- failed table lookups on the instances should fallback to the class table, to get methods
function Set:new(init, o)
local obj = o or {}
setmetatable(obj, self)
obj.value = init
obj.prop_set = {}
for _, val in pairs(init) do
obj.prop_set[val] = true
end
return obj
end
function Set:is_in(key)
return self.prop_set[key] ~= nil
end
utils.Set = Set
--[[
Programmation fonctionnelle, application d'une fonction sur chaque élément d'un tableau
map(f,{a, b, c, ...}) = {f(a), f(b), f(c), ...}
--]]
local function map(func, array)
local new_array = {}
for i,v in ipairs(array) do
new_array[i] = func(v)
end
return new_array
end
utils.map = map
function utils.formatTableWithLastSep(vector, sep, lastsep)
local descr = table.concat(vector, sep, 1, #vector-1)
if #vector > 1 then
descr = descr .. lastsep .. vector[#vector]
else
descr = vector[1]
end
return descr
end
return utils