Moduuli:Fr:TableBuilder

Hei, olet tullut tänne etsimään sanan Moduuli:Fr:TableBuilder merkitystä. DICTIOUS-sanakirjasta löydät paitsi kaikki sanan Moduuli:Fr:TableBuilder sanakirjamerkitykset, myös sen etymologian, ominaisuudet ja sen, miten Moduuli:Fr:TableBuilder sanotaan yksikössä ja monikossa. Kaikki mitä sinun tarvitsee tietää sanasta Moduuli:Fr:TableBuilder on tässä. Sanan Moduuli:Fr:TableBuilder määritelmä auttaa sinua olemaan täsmällisempi ja oikeampi puhuessasi tai kirjoittaessasi tekstejäsi. Kun tunnet sananModuuli:Fr:TableBuilder määritelmän sekä muiden sanojen määritelmät, rikastutat sanavarastoasi ja saat lisää ja parempia kielellisiä resursseja.

Moduulin Fr:TableBuilder käyttöohje


--Module appliquant aux fonctions de la librairie Table une inteface fluide.

local meta = {

    insert = function ( t, ... )
        table.insert( t, ... )
        return t
    end,
    
    remove = function ( t, ... )
        table.remove( t, ... )
        return t
    end,
    
    sort = function ( t, ... )
        table.sort( t, ... )
        return t
    end,
    
    maxn = function ( t )
        return table.maxn( t )
    end,
    
    concat = function ( t, ... )
        return table.concat( t, ... )
    end,
    
    minsert = function( t, ... )
        local sel
        for i = 1, select( '#', ... ) do
            sel = select( i, ... )
            if sel then
                table.insert( t, sel )
            end
        end
        return t
    end,
    
    tinsert = function( t, tab, first, last )
        if type( tab ) == 'table' then
            for i = ( tonumber( first ) or 1 ), ( tonumber( last ) or #tab ) do
                table.insert( t, tab )
            end
        end
        return t
    end,
}   

meta.__index = function ( t, key ) 
    local metafunc = meta
    if type( metafunc ) == 'function' then
        return function ( ... ) return metafunc( t, ... ) end
    end
end
        
-- fin des fonctions de la meta-table


local TableBuilder = {
    new = function( ... )
        local t = { ... }
        setmetatable( t, meta )
        return t
    end,
    
    set = function( t )
        if type( t ) == 'table' then
            setmetatable( t, meta )
        end
        return t
    end,

    clone = function ( t )
        local tableRefs = { }
        local function recursiveClone( val )
            if type( val ) == 'table' then
                -- Encode circular references correctly
                if tableRefs ~= nil then
                    return tableRefs
                end
    
                local retVal = { }
                tableRefs = setmetatable( retVal, meta )
    
                for key, elt in pairs( val ) do
                    retVal = recursiveClone( elt )
                end
                return retVal
            else
                return val
            end
        end
        return recursiveClone( t )
    end,
}

return TableBuilder