setfield
change the value of an element of a mlist, tlist or list
Syntax
uL = setfield(a, v, L)
Arguments
- L
- a
list
,tlist
ormlist
list: the list whose component must be changed. - a
- Address of the component to change. It can be either its field name specified as a string, or its index specified as a positive integer. See insertion for more details.
- v
- Any Scilab object: the value to assign.
- uL
- The updated list.
Description
L=setfield(a,v,L)
addresses and changes the
ith element of a list, in a unified way
over lists, tlists and mlists.
For simple lists and for tlists, L=setfield(a,v,L)
is equivalent to L(a)=v
, that is simpler and should be preferred.
The same stands for any mlist if the address a
is a
field's name.
However, for any mlist L, if i
is an index, the insertion
L(i)=v
is not predefined, in order to let the user define
an overload implementing a matrix-oriented insertion, if required.
Yet setfield(i,v,L)
is always defined, with the same meaning as
for other list and tlist types.
Examples
For a tlist, setfield(3, v, T)
is equivalent to
T(3)=v
:
T = tlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]); // The insertion is predefined: 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]); --> // The insertion is predefined: --> T(3) = [%t %t %f]; --> T(3) ans = T T F --> T = setfield(3, [%f %t %f], T); --> T(3) ans = F T F
For a mlist, there is no predefined indexed insertion routine, to let the user define a matrix-oriented insertion overload if required.
M = mlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]); M.b = [%t %t %t]; M.b // OK, while ... M(3) = [%f %t %f]; // => error // But a raw direct insertion with setfield() is always 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 // OK, while ... ans = T T T --> M(3) = [%f %t %f]; // => error Function not defined for given argument type(s), check arguments or define function %b_i_V for overloading. --> // But a raw direct insertion with setfield() is always possible: --> M = setfield(3, [%t %f %t], M); --> getfield(3, M) ans = T F T
History
Version | Description |
6.0.0 |
|
Report an issue | ||
<< rlist | Data Structures | struct >> |