setfield
изменение значения элемента списка типа mlist, tlist или list
Синтаксис
uL = setfield(a, v, L)
Аргументы
- L
- список типа
list
,tlist
илиmlist
: список, в котором требуется изменить элемент. - a
- адрес элемента, который нужно изменить. Это может быть или его имя поля, указанного в виде строки, либо его индекс, указанный в виде положительного целого числа. См. подробности в вставке.
- v
- любой объект Scilab: значение для присвоения.
- uL
- Обновлённый список.
Описание
L=setfield(a,v,L)
адресует и изменяет
iй элемент списка унифицированным образом
среди списков типа list, tlist и mlist.
Для простых списков (list) и для типизированных списков (tlist),
L=setfield(a,v,L)
эквивалентно L(a)=v
,
то есть проще и должно быть предпочтительнее. Аналогично для любого
матричноориентированного списка (mlist), если адрес a
является именем поля.
Тем не менее, для любого матричноориентированного списка
L
, если i
является индексом, то
вставка L(i)=v
не предопределена, для того, чтобы
позволить пользователю определить перегрузку, реализующую
матричноориентированную вставку, если требуется. Вот
setfield(i,v,L)
всегда определена, с тем же смыслом,
что и для других списков типа list и tlist.
Примеры
Для списка типа tlist, setfield(3, v, T)
эквивалентно
T(3)=v
:
T = tlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]); // Вставка предопределена: 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]); --> // Вставка предопределена: --> T(3) = [%t %t %f]; --> T(3) ans = T T F --> T = setfield(3, [%f %t %f], T); --> T(3) ans = F T F
Для списка типа mlist, нет процедуры предопределённой индексированной вставки, чтобы позволить пользователю определить перегрузку матричноориентированной вставки, если потребуется.
M = mlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]); M.b = [%t %t %t]; M.b // OK, пока ... M(3) = [%f %t %f]; // => error // Но необработанная прямая вставка с setfield() всегда возможна: 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, пока ... 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. --> // Но необработанная прямая вставка с setfield() всегда возможна: --> M = setfield(3, [%t %f %t], M); --> getfield(3, M) ans = T F T
Смотрите также
История
Версия | Описание |
6.0.0 |
|
Report an issue | ||
<< rlist | Data Structures | struct >> |