# mlist

objeto Scilab, definição de listas com tipos orientadas matricialmente

## Seqüência de Chamamento

    mlist(typ,a1,....an )

## Parâmetros

typ

  vector of character strings

ai

  any Scilab object (`matrix, list,string...` ).

## Descrição

Objetos mlist são bastante semelhantes a objetos tlist objects. A única diferença concerne às sintaxes de extração e inserção (extraction e insertion): se `M` é uma mlist, para qualquer índice `i` que não é um campo de nome, `M(i)` não é mais o `i`-ésimo campo da lista

A semântica da sintaxe de extração e inserção deve ser dada por uma função de (sobrecarga) overloading.

A função de overloading para sintaxe de extração `b=a(i1,...,in)` tem a seguinte seqüência de chamamento: `b=%<tipo_de_a>_e_(i1,...,in,a)`

e a sintaxe `[x1,..,xm]=a(i1,...,in)` tem a seguinte seqüência de chamamento: `[x1,..,xm]=%<type_de_a>_e_(i1,...,in,a)`

A função de overloading associada à sintaxe de inserção `a(i1,...,in)=b` tem a seguinte seqüência de chamamento: `a=%<type_de_b>_i_<type_de_a>(i1,...,in,b,a)`.

Os campos de um mlist devem, então, ser designados por seus nomes. Eles também podem ser manipulados usando-se as funções `getfield` e `setfield`.

## Exemplos

    M=mlist(['V','name','value'],['a','b';'c' 'd'],[1 2; 3 4]);
    //Definindo exibição
    function %V_p(M),disp(M.name+':'+string(M.value)),endfunction

    //Definindo operação de extração
    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,:) // a segunda entrada do vetor M
    M.value

    //Definindo operações de inserção
    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) //inserção de uma matriz regular em uma matriz V
      M=varargin($)
      N=varargin($-1)
      M.value(varargin(1:$-2))=N
      M.name(varargin(1:$-2))=emptystr(N)
    endfunction
    M(1,1)=44

    //caso de tlists
    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')

## Ver Também

- tlist
- list
- overloading
- getfield
- setfield