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 >> |