numArgumentsFromSubscript

Método que uma classe pode sobrecarregar para dizer quantas saídas uma expressão de indexação retorna.

Categoria: Programming > Classes

Sintaxe

n = numArgumentsFromSubscript(obj, s, indexingContext)

Retorna o número de valores produzidos quando obj é indexado com a cadeia s no contexto dado.

Descrição

Quando uma classe sobrecarrega subsref ou subsasgn, o MATLAB precisa saber quantos valores uma expressão como obj.list{:} produz antes de chamar o método sobrecarregado com o nargout correto. A regra padrão conta os elementos que um índice comum selecionaria. Uma classe sobrescreve numArgumentsFromSubscript para aplicar sua própria regra, por exemplo retornando 1 para qualquer índice em um contêiner.

Quem costuma chamar este método é a própria linguagem, e não o código do usuário.

Argumentos de entrada

obj
O objeto sendo indexado.
s
Array de structs de indexação com os campos type e subs, como o construído por substruct.
indexingContext
Um membro de matlab.indexing.IndexingContext: Statement, Expression ou Assignment.

Argumentos de saída

n
Número de saídas (ou entradas, em uma atribuição) que a expressão representa.

Exemplo

Uma classe que indexa a própria lista

writelines(["classdef Bag", "  properties", "    Items = {}", "  end", "  methods", "    function n = numArgumentsFromSubscript(obj, s, ctx)", "      n = 1;", "    end", "    function out = subsref(obj, s)", "      out = obj.Items{s(1).subs{1}};", "    end", "  end", "end"], 'Bag.m');
b = Bag;
b.Items = {10, 20, 30};
b(2)
Saída
ans = 20

b(2) chama o subsref sobrecarregado; numArgumentsFromSubscript informa à linguagem que ele retorna exatamente um valor.

Observações

O MatLivre não oferece a enumeração matlab.indexing.IndexingContext, então chamar numArgumentsFromSubscript diretamente sempre informa um erro. Uma classe ainda pode definir o método, e a indexação dessas classes funciona.

Veja também

subsref subsasgn substruct subsindex