Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Português - 日本語 - Русский
Aide de Scilab >> Listes Structures Cells > setfield

setfield

modifie la valeur d'un élément d'une mlist, tlist ou list

Séquence d'appel

uL = setfield(a, v, L)

Arguments

L
liste de type list, tlist ou mlist, dont un élement doit être modifié.

a
Adresse de l'élément de liste à modifier. Elle peut être soit un mot texte spécifiant un nom de champ, soit un entier positif indiquant le n° de l'élément dans la liste. Voir insertion pour plus de détails.

v
Tout objet Scilab : la valeur à affecter à l'élément.

uL
Liste modifiée.

Description

L=setfield(a,v,L) adresse et modifie le ième élément d'une liste, selon une syntaxe identique pour tous les types list, tlist et mlist disponibles en Scilab.

Pour des simples list et pour des mlist, L=setfield(a,v,L) est équivalent à L(a)=v, qui est plus simple et préférable. L'équivalence tient aussi pour toute mlist si l'adresse a est le nom d'un champ.

En revanche, pour toute mlist L, si i est un n°, L(i)=v adresse le ième élément de L considérée comme un vecteur, au lieu du ième élément tel que déclaré dans la définition initiale mlist(c1,c2,c3...). setfield(i,v,L) aura alors le même sens que pour les autres types de listes.

Exemples

Pour une tlist, setfield(3, v, T) équivaut à T(3)=v :

T = tlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]);
// L'insertion est prédéfinie :
T(3) = [%t %t %f];
T(3)

T = setfield(3, [%f %t %f], T);
T(3)
--> T = tlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]);
--> // L'insertion est prédéfinie :
--> T(3) = [%t %t %f];
--> T(3)
 ans  =
  T T F

--> T = setfield(3, [%f %t %f], T);
--> T(3)
 ans  =
  F T F

Pour une mlist, aucune routine d'insertion indexée n'est prédéfinie. L'utilisateur est ainsi libre d'en définir une pour un adressage matriciel des données.

M = mlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]);
M.b = [%t %t %t];
M.b                 // OK, alors que ...
M(3) = [%f %t %f];  // => erreur

// Une insertion directe avec setfield() est toujours possible :
M = setfield(3, [%t %f %t], M);
getfield(3, M)
--> M = mlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]);
--> M.b = [%t %t %t];
--> M.b 
 ans  =
  T T T

--> M(3) = [%t %f %t];  // => erreur
Fonction non définie pour les types fournis.
  vérifier les arguments ou définir la fonction %b_i_V pour la surcharge.

--> // Une insertion directe avec setfield() est toujours possible :
--> M = setfield(3, [%t %f %t], M);
--> getfield(3, M)
 ans  =
  T F T

Voir aussi

  • insertion — insertion/modification dans une variable
  • getfield — extraction d'un champ d'une liste

History

VersionDescription
6.0.0
  • La liste modifiée est désormais donnée en réponse, au lieu d'être modifiée "sur place".
  • setfield() ne peut plus être utilisée pour des tableaux de cellules.
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Jul 20 11:19:21 CEST 2021