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 '.') e subs, em geral construído com substruct. Vários elementos descrevem uma cadeia.
V
O valor a atribuir.

Argumentos de saída

B
A cópia modificada. O próprio A nã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
Saída
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.

Veja também

subsref substruct numArgumentsFromSubscript setfield