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
6 * This file must be used under the terms of the CeCILL.
7 * This source file is licensed as described in the file COPYING, which
8 * you should have received as part of this distribution. The terms
9 * are also available at
10 * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
13 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:lang="ru" xml:id="list">
15 <refname>list</refname>
16 <refpurpose>объект Scilab'а и функция определения списка</refpurpose>
19 <title>Последовательность вызова</title>
20 <synopsis>list(a1, ..., an)</synopsis>
23 <title>Описание</title>
25 Создаёт список <literal>list</literal> с элементами
26 <varname>ai</varname>, которые являются произвольными объектами Scilab'а (<literal>matrix</literal>,
27 <literal>list</literal>,...). Тип объекта <literal>list</literal> равен 15. <code>list()</code>
28 создаёт пустой список (0 элементов).
32 <title>Операции со списками</title>
35 <term>выделение</term>
38 <literal>[x,y,z,...]=L(v)</literal>, где <literal>v</literal> - вектор индексов;
39 <literal>[x,y,z,...]=L(:)</literal> выделяет все элементы.
44 <term>вставка на место индекса i</term>
47 <code>L(i)=a</code> (заметьте, что это не ошибка использовать <code>L(i)=a</code> с
48 <code><![CDATA[i > 1 + size(L)]]></code>, но
49 некоторые элементы списка тогда не определены, и их
50 выделение вызовет ошибку).
55 <term>добавление элемента в хвост</term>
58 <code>L($+1)=e</code>.
63 <term>добавление элемента в начало</term>
68 После этой операции <literal>e</literal> имеет индекс 1, исходные элементы будут сдвинуты вправо.
77 <code>L(i)=null()</code> удаляет <literal>i</literal>-тый элемент списка <literal>L</literal>.
82 <term>конкатенация двух списков</term>
85 <code>L3 = lstcat(L1,L2)</code>.
90 <term>число элементов списка</term>
93 вы можете использовать либо <code>nb_elm = size(L)</code>, либо <code>nb_elm = length(L)</code>.
98 <term>итерации со списками</term>
101 можно использовать список <literal>L</literal> в цикле <link linkend="for">for</link>:
102 <literal>for e=L,...,end</literal> - цикл с числом
103 итераций <literal>length(L)</literal>, переменная
104 цикла <literal>e</literal> будет равна <literal>L(i)</literal>
105 на <literal>i</literal>-той итерации.
112 <title>Примечания</title>
114 Scilab предлагает также другие виды списков, тип <link linkend="tlist">tlist</link> (типизированный список)
115 и тип <link linkend="mlist">mlist</link>
116 (матричноориентированный список), которые полезны для
117 определения нового типа данных с механизмом
118 <link linkend="overloading">перегрузки</link> операторов
119 (<link linkend="hypermatrices">гиперматрицы</link>, которые
120 являются многомерными массивами, в Scilab'е на самом деле
121 имеют тип <emphasis>mlist</emphasis>).
124 Также доступны структуры <emphasis>struct</emphasis> Matlab'а.
128 <title>Примеры</title>
129 <programlisting role="example"><![CDATA[
130 l = list(1,["a" "b"]) // объявление основного списка с элементом типа
131 // double и вектором двух строковых значений
132 size(l) // размер равен 2
133 // l(0) - Не существует!
134 l(1) // доступ к значению типа double
135 l(2) // доступ к вектору строковых значений
136 size(l(2)) // размер равен 1,2
138 l(0) = "foo" // вставка в начало списка
139 // l(0) - по-прежнему не существует
142 l($+1) = "hello" // вставка в конец списка
143 l(2) = "toto" // перезапись моего значения типа double
144 l(3) = rand(1,2) // перезапись моего вектора строковых значений
146 l(3) = null() // удаление третьего элемента
148 lbis = list("gewurtz", "caipirina" ,"debug") // объявление нового списка
149 lter = lstcat(l,lbis) // слияние двух списков
150 size(lter) - size(lbis) - size(l) // должен быть ноль
154 <refsection role="see also">
155 <title>Смотрите также</title>
156 <simplelist type="inline">
158 <link linkend="null">null</link>
161 <link linkend="lstcat">lstcat</link>
164 <link linkend="tlist">tlist</link>
167 <link linkend="mlist">mlist</link>
170 <link linkend="insertion">вставка</link>
173 <link linkend="extraction">выделение</link>
176 <link linkend="size">size</link>
179 <link linkend="length">length</link>