Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語

Please note that the recommended version of Scilab is 6.0.0. This page might be outdated.
See the recommended documentation of this function

Справка Scilab >> Data Structures > mlist

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 — внесение поля списка
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 02 14:01:08 CEST 2014