Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.1.0 - Русский


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 >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon May 22 12:41:14 CEST 2023