Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Module:TableBuilder — Wikipédia
Module:TableBuilder — Wikipédia 👆 Click Here! Read More..
Cette page est protégée.
Une page de Wikipédia, l'encyclopédie libre.

 Documentation[voir] [modifier] [historique] [purger]
cadenas rouge

Ce module à risque est inclus sur un très grand nombre de pages et ne peut pas être modifié.

Cette protection ne constitue pas obligatoirement une approbation de la version actuelle. Vous pouvez proposer une modification en page de discussion. Lorsqu'un compromis sera trouvé en page de discussion, vous pourrez demander la modification auprès des administrateurs (voir le journal des protections).

TableBuilder est un module qui applique aux fonctions de la librairie Table une interface fluide. Le code est ainsi à la fois plus concis et plus clair.

Attention : ce module ne devrait être utilisé que pour des tables séquences, ou au pire des tables dont les éléments sont connus et limités. En effet, ajouter à la table un élément ayant pour index le nom d'une de ces fonctions remplace la fonction par cet élément.

Utilisation

Vous devez premièrement charger le module :

local TableBuilder = require('Module:TableBuilder')

Deuxièmement, vous devez instancier le tableau, avec new pour une nouvelle table, avec set pour une table existante, ou en clonant une table existante.

local tab1 = TableBuilder.new()
TableBuilder.set(tab2)
local tab1 = TableBuilder.clone(tab3)

Ensuite, vous pouvez utiliser les méthodes énumérées dans la librairie Table (insert, remove, sort, maxn) ou une des fonctions spécifiques décrites ci-dessous.

Enfin, vous devez concaténer la table en utilisant la méthode concat() :

tab.concat()

Fonctions spécifiques

  • minsert( ... ) — permet des inserts multiples, pour ajouter en une opération plusieurs éléments à la fin de la table. Les paramètres passés à la fonction valant false ou nil sont ignorés.
  • tinsert( table2, i, j ) — ajoute à la fin de la table les éléments table2[i] à table2[j]. La valeur par défaut de i est 1, et la valeur par défaut de j est la longueur de la table. Si i est plus grand que j aucun élément n'est ajouté.

clone

TableBuilder.clone duplique une table existante, de façon récursive.

Contrairement à mw.clone, cette fonction ne clone pas la meta-table, mais utilise la meta-table de TableBuilder. Ceci permet notamment de modifier une table chargée par mw.loadData.

Cette fonction ne devrait pas être utilisée sur la totalité de la table chargée par loadData (utiliser require sera plus économe en mémoire) mais sur une petite sous-table.

Exemples

local TableBuilder = require( 'Module:TableBuilder' )

local date = { 'Cet exemple a été modifié le' }

TableBuilder.set( date )

date.insert( "4" )
    .insert( "2013" )
    .insert( 3, "septembre" )

local time = TableBuilder.new()
local heure, minute = "12", "8"
local seconde

time.minsert( "à", heure, "heures et", minute, "minutes", seconde, seconde and "secondes" )

date.tinsert( time )

local s = date.concat( ' ' ) .. "."
--s = 'Cet exemple a été modifié le 4 septembre 2013 à 12 h et 8 minutes.'
    • Projet Scribunto Projet Scribunto

La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis sa sous-page de documentation. Veuillez placer les catégories sur cette page-là.
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.

--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, ... )
        for i = 1, select( '#', ... ) do
            local sel = select( i, ... )
            if sel then
                t[#t+1] = 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
                t[#t+1] = tab[i]
            end
        end
        return t
    end,
}

meta.__index = function ( t, key )
    local metafunc = meta[key]
    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[val] ~= nil then
                    return tableRefs[val]
                end

                local retVal = { }
                tableRefs[val] = setmetatable( retVal, meta )

                for key, elt in pairs( val ) do
                    retVal[key] = recursiveClone( elt )
                end
                return retVal
            else
                return val
            end
        end
        return recursiveClone( t )
    end,
}

return TableBuilder
Ce document provient de « https://fr.teknopedia.teknokrat.ac.id/w/index.php?title=Module:TableBuilder&oldid=225225560 ».
Catégories :
  • Méta-module
  • Module appelé par un autre module
Catégorie cachée :
  • Module protégé

  • indonesia
  • Polski
  • الرية
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • مصر
  • Nederlands
  • 本語
  • Português
  • Sinugboanong Binisaya
  • Svenska
  • Українска
  • Tiếng Việt
  • Winaray
  • 中文
  • Русски
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id