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
typeesubs, como o construído porsubstruct. indexingContext- Um membro de
matlab.indexing.IndexingContext:Statement,ExpressionouAssignment.
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)
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.