mlist
объект Scilab'а, определение матричноориентированного типизированного списка
Синтаксис
mlist(typ, a1, ..., an)
Аргументы
- typ
вектор символьных строк.
- ai
любой объект Scilab'а (матрица, список, строка, ...).
Описание
Объект mlist очень похож на объект tlist.
Единственное отличие касается синтаксиса выделения и
вставки:
если M
является mlist
'ом, то для любого индекса i
, который не является именем поля, M(i)
более не является i
-тым полем списка.
Семантика синтаксиса выделения и вставки должна задаваться функцией перегрузки.
Функция перегрузки для синтаксиса выделения b=a(i1, ..., in)
имеет следующую последовательность вызова: b=%<тип_a>_e_(i1, ..., in, a)
.
и синтаксис
[x1, ..., xm]=a(i1, ..., in)
имеет следующую последовательность вызова:
[x1, ..., xm]=%<тип_a>_e_(i1, ..., in,a)
.
Функция перегрузки, связанная с синтаксисом вставки
a(i1, ..., in)=b
имеет следующую последовательность вызова:
a=%<тип_b>_i_<тип_a>(i1, ..., in, b, a)
.
Поля mlist
'а должны тогда обозначаться по их
именам. Они также могут обрабатываться с помощью функций
getfield
и setfield
.
Примеры
M=mlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]); //определение вывода на экран function %V_p(M),disp(M.name+':'+string(M.value)),endfunction //определение операции выделения function r=%V_e(varargin) M=varargin($) r=mlist(['V','name','value'],M.name(varargin(1:$-1)),M.value(varargin(1:$-1))) endfunction M(2,:) // вторая строка M M.value //определение операции вставки function M=%V_i_V(varargin) M=varargin($) N=varargin($-1) M.value(varargin(1:$-2))=N.value M.name(varargin(1:$-2))=N.name endfunction M(1,1)=M(2,2) function M=%s_i_V(varargin) //вставка обычной матрицы в матрицу V M=varargin($) N=varargin($-1) M.value(varargin(1:$-2))=N M.name(varargin(1:$-2))=emptystr(N) endfunction M(1,1)=44 // в случае tlist'а M=tlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]); M(2) M(2)='a'+string([1 2;3 4]) M('name')
Смотрите также
- tlist — объект Scilab'а и определение типизированного списка
- list — объект Scilab'а и функция определения списка
- перегрузка — возможности перегрузки отображения, функций и операторов
- getfield — выделение поля списка
- setfield — изменение значения элемента списка типа mlist, tlist или list
Report an issue | ||
<< lstcat | Data Structures | null >> |