Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
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 >> |