subsasgn
Atribuição por meio de uma estrutura de índices, a função por trás de A(i) = v, A.f = v e A{i} = v.
Categoria: Programming > Classes
Sintaxe
B = subsasgn(A, S, V)
Retorna uma cópia de A com os elementos selecionados por S substituídos por V.
Descrição
subsasgn é o que o interpretador chama em uma atribuição com índice. Chamá-la diretamente é útil quando a indexação é montada em tempo de execução, por exemplo quando os nomes dos campos ou o número de níveis não são conhecidos de antemão.
Cada elemento de S é um nível: substruct('.', 'a', '()', {2}) representa .a(2). Uma classe pode sobrecarregar subsasgn para dar significado próprio à atribuição.
Argumentos de entrada
A- O array, struct, cell array ou objeto a modificar.
S- Array de structs com os campos
type('()','{}'ou'.') esubs, em geral construído comsubstruct. Vários elementos descrevem uma cadeia. V- O valor a atribuir.
Argumentos de saída
B- A cópia modificada. O próprio
Anão é alterado.
Exemplo
Alterando um elemento e uma célula aninhada
a = [10 20 30];
b = subsasgn(a, substruct('()', {2}), 99)
S.f = {1, 2};
T = subsasgn(S, substruct('.', 'f', '{}', {2}), 'new');
T.f
b = 1×3
10 99 30
ans = 1×2 cell
{[1]} {'new'}
Observações
O MatLivre não chama um subsasgn definido pelo usuário em atribuições com parênteses sobre objetos, então a sobrecarga de uma classe não vale para obj(i) = v.