1 <?xml version="1.0" encoding="UTF-8"?>
3 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4 * Copyright (C) 2006-2008 - INRIA
5 * Copyright (C) 2012 - 2016 - Scilab Enterprises
6 * Copyright (C) 2020 - Samuel GOUGEON
8 * This file is hereby licensed under the terms of the GNU GPL v2.0,
9 * pursuant to article 5.3.4 of the CeCILL v.2.1.
10 * This file was originally licensed under the terms of the CeCILL v2.1,
11 * and continues to be available under such terms.
12 * For more information, see the COPYING file which you should have received
13 * along with this program.
16 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
17 xmlns:svg="http://www.w3.org/2000/svg" xmlns:db="http://docbook.org/ns/docbook"
18 xmlns:scilab="http://www.scilab.org" xml:lang="ru" xml:id="setfield">
20 <refname>setfield</refname>
21 <refpurpose>изменение значения элемента списка типа mlist, tlist или list</refpurpose>
24 <title>Синтаксис</title>
25 <synopsis>uL = setfield(a, v, L)</synopsis>
28 <title>Аргументы</title>
33 список типа <literal>list</literal>, <literal>tlist</literal> или
34 <literal>mlist</literal>: список, в котором требуется изменить элемент.
41 адрес элемента, который нужно изменить. Это может быть или его имя
42 поля, указанного в виде строки, либо его индекс, указанный в виде
43 положительного целого числа. См. подробности в <link linkend="insertion">вставке</link>.
50 любой объект Scilab: значение для присвоения.
64 <title>Описание</title>
66 <literal>L=setfield(a,v,L)</literal> адресует и изменяет
67 i<superscript>й</superscript> элемент списка унифицированным образом
68 среди списков типа list, tlist и mlist.
71 Для простых списков (list) и для типизированных списков (tlist),
72 <literal>L=setfield(a,v,L)</literal> эквивалентно <literal>L(a)=v</literal>,
73 то есть проще и должно быть предпочтительнее. Аналогично для любого
74 матричноориентированного списка (mlist), если адрес <varname>a</varname>
78 Тем не менее, для любого матричноориентированного списка
79 <varname>L</varname>, если <literal>i</literal> является индексом, то
80 вставка <literal>L(i)=v</literal> не предопределена, для того, чтобы
81 позволить пользователю определить перегрузку, реализующую
82 матричноориентированную вставку, если требуется. Вот
83 <literal>setfield(i,v,L)</literal> всегда определена, с тем же смыслом,
84 что и для других списков типа list и tlist.
88 <title>Примеры</title>
90 Для списка типа tlist, <literal>setfield(3, v, T)</literal> эквивалентно
91 <literal>T(3)=v</literal> :
93 <programlisting role="example"><![CDATA[
94 T = tlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]);
95 // Вставка предопределена:
99 T = setfield(3, [%f %t %f], T);
103 --> T = tlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]);
104 --> // Вставка предопределена:
105 --> T(3) = [%t %t %f];
110 --> T = setfield(3, [%f %t %f], T);
116 Для списка типа mlist, нет процедуры предопределённой индексированной
117 вставки, чтобы позволить пользователю определить перегрузку
118 матричноориентированной вставки, если потребуется.
120 <programlisting role="example"><![CDATA[
121 M = mlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]);
124 M(3) = [%f %t %f]; // => error
126 // Но необработанная прямая вставка с setfield() всегда возможна:
127 M = setfield(3, [%t %f %t], M);
131 --> M = mlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]);
132 --> M.b = [%t %t %t];
133 --> M.b // OK, пока ...
137 --> M(3) = [%f %t %f]; // => error
138 Function not defined for given argument type(s),
139 check arguments or define function %b_i_V for overloading.
141 --> // Но необработанная прямая вставка с setfield() всегда возможна:
142 --> M = setfield(3, [%t %f %t], M);
148 <refsection role="see also">
149 <title>Смотрите также</title>
150 <simplelist type="inline">
152 <link linkend="insertion">вставка</link>
155 <link linkend="getfield">getfield</link>
160 <title>История</title>
163 <revnumber>6.0.0</revnumber>
167 Теперь возвращается обновлённый список вместо изменения
171 setfield() больше не может использоваться для cell-массивов.