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
oumlist
, 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
History
Version | Description |
6.0.0 |
|
Report an issue | ||
<< rlist | Listes Structures Cells | struct >> |