null supprime un élément d'une liste, ou un champ d'une structure, M-liste ou T-liste

## Syntaxe

                List(i) = null()
                Struct.field = null()

## Description

`List` étant une liste simple, `List(i)=[]` déclare `[]` comme valeur de l'élément n° i de la liste. Ainsi, contrairement à son action sur les tableaux, `[]` ne peut pas ici servir de destructeur.

`null()` est conçue pour le faire. Elle produit un objet de type 0 et de typeof `listdelete` qui supprime l'objet auquel il est affecté.

Le code de surcharge est objets de typeof `listdelete` est 0.
L'affectation du résultat de `null()` à une variable supprime celle-ci. L'utilisation de `clear` doit cependant être préférée pour supprimer les objets nommés (tels que les variables).

## Exemples

type, typeof, et code de surcharge :

    type(null())
    typeof(null())
    null()==null()

    --> type(null())
     ans  =
       0.

    --> typeof(null())
     ans  =
     listdelete

    --> null()==null()

    Opération indéfinie pour les opérandes données.
    vérifier ou définir la fonction %0_o_0 pour la surcharge.

Suppression d'un élément d'une liste :

    L = list(1:10, "foo", %f, (1-%z)^2);
    length(L)
    L(2) = null();
    length(L)
    L(2)

    --> length(L)
     ans  =
       4.

    --> L(2) = null();

    --> length(L)
     ans  =
       3.

    --> L(2)
     ans  =
      F

Suppression d'un champ d'un tableau de structure :

    s(2,3).r = %pi;
    s(2,1).p = (1-%z)^2;
    s(1,2).b = %T
    s.p = null()

    --> s(2,3).r = %pi;
    --> s(2,1).p = (1-%z)^2;
    --> s(1,2).b = %T
     s  =
      2x3 struct array with fields:
        r
        p
        b

    --> s.p = null()
     s  =
      2x3 struct array with fields:
        r
        b

Suppression d'un champ d'une M-liste ou d'une T-liste : aucun destructeur n'est défini par défaut :

    ML = mlist(["test" "b" "c" "rp" "t"],[%t %f], %i, 1+%s^2, ["abc" "de" "f"]);
    fieldnames(ML)'
    ML.rp
    ML.rp = null()

    --> fieldnames(ML)'
     ans  =
    !b  c  rp  t  !

    --> ML.rp
     ans  =
           2
       1 +s

    --> ML.rp = null()

    Fonction non définie pour les types fournis.
      vérifier les arguments ou définir la fonction %0_i_test pour la surcharge.

    // Définissons un destructeur de champ appelé par "= null()" :

    function L = %0_i_test(fieldName, Null, L)
        header = getfield(1,L)
        i = find(header==fieldName);
        if i~=[] then
            header(i) = [];
            L = setfield(1, header, L);
            L = setfield(i, null(), L);
        end
    endfunction

    // Utilisation :
    ML.rp = null();
    fieldnames(ML)'
    ML.b, ML.c, ML.t

    --> ML.rp = null();
    --> fieldnames(ML)'
     ans  =
    !b  c  t  !

    --> ML.b, ML.c, ML.t
     ans  =
      T F

     ans  =
       i

     ans  =
    !abc  de  f  !

## Voir aussi

- clear
- clearglobal
- []
- delete
- xmlDelete
- jremove
- jnull
- jvoid
- list
- mlist
- tlist
- struct