tlist объект Scilab'а и определение типизированного списка

## Синтаксис

    tlist(typ, a1, ..., an)

## Аргументы

typ

  символьная строка или вектор символьных строк.

ai

  любой объект Scilab'а (`matrix`, `list`, `string`, ...).

## Описание

`tlist(typ, a1, ..., an)` создаёт типизированный список `tlist` с элементами `ai`. Аргумент `typ` определяет тип списка. Такой типизированный список позволяет пользователю определять новые операции, действующие над этими объектами через функции Scilab-а. Единственная разница между `tlist` и `list` состоит в значении типа (16 вместо 15).

`typ(1)` определяет тип списка (символьная строка, используемая для определения запрограммированных действий).

Если это определено, то `typ(i)` может дать `(i+1)`-тому элементу формальное имя.

Стандартные операции, определённые над списками `list` работают и типизированными списками `tlist`:

извлечение:

`[x, y, z, ...]=l(v)`, где `v` - вектор индексов; `[x, y, z]=l(:)` извлекает все элементы.

вставка:

`l(i)=a`

удаление:

`l(i)=null()` удаляет `i`-тый элемент типизированного списка `l`.

Заметьте, что семантика инструкции `l.x=null()` не определена, а определение может быть дано через механизм перегрузки.

вывод на экран.

Более того, если `typ(2:n+1)` определены, то пользователь может обращаться к элементам по их именам.

Ниже приводятся примеры, где используются `tlist`.

Линейные системы представляются особыми типизированными списками, например, линейная система `[A,B,C,D]` представляется типизированным списком `Sys=tlist(['lss';'A';'B';'C';'D';'X0';'dt'],A,B,C,D,x0,'c')` и этот особый список можно создать с помощью функции `syslin`.

`Sys(2)`, `Sys('A')` или `Sys.A` является матрицей состояний, а `Sys('dt')` или `Sys.dt` является временной областью.

Матрица рациональных значений `H` представляется типизированным списком `H=rlist(Num,Den,[])`, где `Num` и `Den` являются матрицами полиномов, а линейная система непрерывного времени с передаточной матрицей `H` может быть создана с помощью `syslin('c',H)`.

`H(2)`, `H('num')` или `H.num` является числителем передаточной матрицы.

## Примеры

    // tlist creation
    t = tlist(["listtype","field1","field2"], [], []);
    t.field1(1) = 10;
    t.field1(2) = 20;
    t.field2(1) = "Scilab";
    t.field2(2) = "tlist";
    t.field2(3) = "пример";

    // Отображение содержимого полей
    disp(t.field1)
    disp(t.field2)

    // Общее отображение типизированного списка
    disp(t)

    // Перегрузка отображения для этого типа типизированного списка
    function %listtype_p(mytlist)
      f = fieldnames(mytlist);

      // typeof(mytlist) <=> f(1)
      mprintf("Отображение типизированного списка типа: %s\n", typeof(mytlist));

      mprintf("\n");

      mprintf("-- Поле ''%s'' --\n", f(1));
      mprintf("Содержимое: %s\n", sci2exp(mytlist(f(1))));

      mprintf("\n");

      mprintf("-- Поле ''%s'' --\n", f(2));
      mprintf("Содержимое: %s\n", sci2exp(mytlist(f(2))));
    endfunction

    // Отображение с помощью функции перегрузки
    disp(t)

## Смотрите также

- процент
- syslin
- list
- mlist