type возвращает тип переменной

## Синтаксис

    i = type(x)

## Аргументы

x

  объект Scilab'а.

i

  целое число.

## Описание

`type(x)` возвращает целое число, которое равно типу `x`:

1
  матрица вещественных или комплексных значений удвоенной точности (double).
2
  матрица полиномов.
4
  матрица логических значений.
5
  разрежённая матрица.
6
  разрежённая матрица логических значений.
7
  разрежённая матрица Matlab'а.
8
  матрица целочисленных значений, хранимых в 1 (`int8`), 2 (`int16`) , 4 (`int32`) или 8 (`int64`) байтах.
9
  матрица графических дескрипторов.
10
  матрица символьных строк.
13
  компилированная функция (Scilab code).
14
  библиотека функций.
15
  список (list).
16
  типизированный список (tlist).
17
  матричноориентированный типизированный список (mlist).
128
  идентификатор блока Xcos, результата lufact() и т. д.
129
  размер неявного многочлена, используемый для индексации.
130
  встроенная функция Scilab'а, называемая также шлюзом (код C, C++ или Fortran).
0
  Неопределённый компонент простого списка. Такой компонент может быть в качестве опущенного входного аргумента при вызове Scilab-функции, как, например, в `foo(a,,b)`: внутри функции отсутствующий аргумент определён, но он нулевого типа. Определение `L=list(%pi,,%i,,,%z)` создаёт `L(2)` типа 0, и т.д. Для этих объектов `isdef()` возвращает `%T`, но их нулевой тип может быть проверен с помощью `type()`.

### Примечания

Некоторые данные могут быть сохранены в настраиваемых контейнерах, определённых как типовые списки типа 16 (tlist) или 17 (матрично-ориентированный типизированный список mlist). Это также и случай для встроенных типов, как например (рациональные числа), (структуры), пространство состояний state-space, интерактивные деревья (uitree), и т.д., для которых `type(..)` вернёт 16 или 17. Нужно использовать typeof для получения более детальной информации об их действительном (под)типе.

Преобразование типов в смешанных операциях:

Когда бинарный оператор (например, умножение) или n-арный итерационный оператор (например, конкатенация) применяется межжду двумя операндами различных, но совместных типов, обычно тип одного из двух неявно конвертируется, а другой операнд устанавливает тип результата к своему собственному типу.

Примеры с конкатенацией : `[%t, 3.124]`, `[int8(5), 3.124]`, и т.д.

Для конкатенации, сложения, вычитания, умножения, деления и возведения в степень иерархия между типами операндов следующая (читай "A < B": B устанавливает свой тип для A) :

- логическое < (десятичное значение, комплекснозначное)
- (десятичное число, комплекснозначное число) < кодированное целое.
- полиномиальное значение (вещественное | комплексное) < рациональное значение (вещественное | комплексное)

## Примеры

    // Выберите строки, щелкните их правой кнопкой мыши и выберите «Execute ..», чтобы запустить их
    L = list(%pi,,"abc");
    type(L(2))                  // неопределённый компонент списка

    type(42)                    // десятичные числа
    type(%nan)
    type(%inf)

    type(1+%i)                  // комплекснные числа

    s = sparse([1,2;4,5;3,10],[1,2,3]);
    type(s)                     // разрежённые десятичные или комплексные числа

    type(%t)                    // логические значения

    type(s>2)                   // разрежённые логические значения

    g = int8([1 -120 127 312]); // кодированные целые числа
    type(g)
    type(1.23 * int8(4))

    type(1-%z+%z^2)             // полиномиальные значения

    type(gdf())                 // указатели на графические окна

    type("foo")                 // текстовые значения

    deff('[x] = mymacro(y,z)',['a=3*y+1'; 'x=a*z+y']);
    type(mymacro)               // функции Scilab

    type(disp)                  // Встроенные фукнции

    l = list(1,["a" "b"]);      // простые списки
    type(l)

    e = tlist(["listtype","field1","field2"], [], []);
    type(e)                     // типизированный список

    h = mlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
    type(h)                     // типизированный матрично-ориентированный список

    clear s, s.r = %pi          // структуры
    type(s)

    c = {%t %pi %i %z "abc" s}  // cell-массивы
    type(c)

    r = [%z/(1-%z) (1-%z)/%z^2]
    type(r)                     // рациональные дроби

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

- typeof
- inttype
- isreal
- квадратные скобки
- перегрузка
- poly
- rational
- tlist
- mlist

## История

6.0 Тип 11 был удалён. Он использовался для некомпилировнных Scilab-функций.