* Bug 14873 fixed [doc]: setfield page fixed updated clarified
[scilab.git] / scilab / modules / data_structures / help / ru_RU / setfield.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
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
7  *
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.
14  *
15  -->
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">
19     <refnamediv>
20         <refname>setfield</refname>
21         <refpurpose>изменение значения элемента списка типа mlist, tlist или list</refpurpose>
22     </refnamediv>
23     <refsynopsisdiv>
24         <title>Синтаксис</title>
25         <synopsis>uL = setfield(a, v, L)</synopsis>
26     </refsynopsisdiv>
27     <refsection>
28         <title>Аргументы</title>
29         <variablelist>
30             <varlistentry>
31                 <term>L</term>
32                 <listitem>
33                     список типа <literal>list</literal>, <literal>tlist</literal> или
34                     <literal>mlist</literal>: список, в котором требуется изменить элемент.
35                     <para/>
36                 </listitem>
37             </varlistentry>
38             <varlistentry>
39                 <term>a</term>
40                 <listitem>
41                     адрес элемента, который нужно изменить. Это может быть или его имя
42                     поля, указанного в виде строки, либо его индекс, указанный в виде
43                     положительного целого числа. См. подробности в <link linkend="insertion">вставке</link>.
44                     <para/>
45                 </listitem>
46             </varlistentry>
47             <varlistentry>
48                 <term>v</term>
49                 <listitem>
50                     любой объект Scilab: значение для присвоения.
51                     <para/>
52                 </listitem>
53             </varlistentry>
54             <varlistentry>
55                 <term>uL</term>
56                 <listitem>
57                     Обновлённый список.
58                     <para/>
59                 </listitem>
60             </varlistentry>
61         </variablelist>
62     </refsection>
63     <refsection>
64         <title>Описание</title>
65         <para>
66             <literal>L=setfield(a,v,L)</literal> адресует и изменяет
67             i<superscript>й</superscript> элемент списка унифицированным образом
68             среди списков типа list, tlist и mlist.
69         </para>
70         <para>
71             Для простых списков (list) и для типизированных списков (tlist),
72             <literal>L=setfield(a,v,L)</literal> эквивалентно <literal>L(a)=v</literal>,
73             то есть проще и должно быть предпочтительнее. Аналогично для любого
74             матричноориентированного списка (mlist), если адрес <varname>a</varname>
75             является именем поля.
76         </para>
77         <para>
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.
85         </para>
86     </refsection>
87     <refsection>
88         <title>Примеры</title>
89         <para>
90             Для списка типа tlist, <literal>setfield(3, v, T)</literal> эквивалентно
91             <literal>T(3)=v</literal> :
92         </para>
93         <programlisting role="example"><![CDATA[
94 T = tlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]);
95 // Вставка предопределена:
96 T(3) = [%t %t %f];
97 T(3)
98
99 T = setfield(3, [%f %t %f], T);
100 T(3)
101  ]]></programlisting>
102     <screen><![CDATA[
103 --> T = tlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]);
104 --> // Вставка предопределена:
105 --> T(3) = [%t %t %f];
106 --> T(3)
107  ans  =
108   T T F
109
110 --> T = setfield(3, [%f %t %f], T);
111 --> T(3)
112  ans  =
113   F T F
114 ]]></screen>
115         <para>
116             Для списка типа mlist, нет процедуры предопределённой индексированной
117             вставки, чтобы позволить пользователю определить перегрузку
118             матричноориентированной вставки, если потребуется.
119         </para>
120         <programlisting role="example"><![CDATA[
121 M = mlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]);
122 M.b = [%t %t %t];
123 M.b                 // OK, пока ...
124 M(3) = [%f %t %f];  // => error
125
126 // Но необработанная прямая вставка с setfield() всегда возможна:
127 M = setfield(3, [%t %f %t], M);
128 getfield(3, M)
129  ]]></programlisting>
130     <screen><![CDATA[
131 --> M = mlist(['V','a','b'], [%z (1-%z) %z^2], [%f %t %t]);
132 --> M.b = [%t %t %t];
133 --> M.b                 // OK, пока ...
134  ans  =
135   T T T
136
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.
140
141 --> // Но необработанная прямая вставка с setfield() всегда возможна:
142 --> M = setfield(3, [%t %f %t], M);
143 --> getfield(3, M)
144  ans  =
145   T F T
146 ]]></screen>
147     </refsection>
148     <refsection role="see also">
149         <title>Смотрите также</title>
150         <simplelist type="inline">
151             <member>
152                 <link linkend="insertion">вставка</link>
153             </member>
154             <member>
155                 <link linkend="getfield">getfield</link>
156             </member>
157         </simplelist>
158     </refsection>
159     <refsection>
160         <title>История</title>
161         <revhistory>
162             <revision>
163                 <revnumber>6.0.0</revnumber>
164                 <revdescription>
165                     <itemizedlist>
166                         <listitem>
167                             Теперь возвращается обновлённый список вместо изменения
168                             "на месте".
169                         </listitem>
170                         <listitem>
171                             setfield() больше не может использоваться для cell-массивов.
172                         </listitem>
173                     </itemizedlist>
174                 </revdescription>
175             </revision>
176         </revhistory>
177     </refsection>
178 </refentry>