nelson.indexing.IndexingOperation
Décrit un élément d'une expression d'indexation.
📝Syntaxe
op = nelson.indexing.IndexingOperation(type, indices)
op = nelson.indexing.IndexingOperation(type, indices, name)
📥Arguments d'entrée
Paramètre Description
type un nelson.indexing.IndexingOperationType, ou son nom en char/string ('Paren', 'Brace', 'Dot', ...).
indices tableau de cellules des indices paren/brace (vide pour une opération dot).
name le nom du champ (opération dot uniquement).
📤Arguments de sortie
Paramètre Description
op un nelson.indexing.IndexingOperation scalaire.
📄Description

nelson.indexing.IndexingOperation décrit une opération d'indexation. Elle est passée aux méthodes parenReference/parenAssign, braceReference/braceAssign et dotReference/dotAssign des classes dérivant de nelson.mixin.indexing.Redefines*. Une expression chaînée est passée sous forme de tableau 1×N d'opérations (une par niveau de la chaîne) : indexOp peut donc être scalaire ou un tableau.

Propriétés : Type (un nelson.indexing.IndexingOperationType), Indices (tableau de cellules des indices, pour Paren/Brace) et Name (le nom du champ, pour Dot).

Un IndexingOperation (scalaire ou tableau) s'applique à une valeur avec la forme dynamique value.(indexOp), qui effectue la chaîne subsref (lecture) ou subsasgn (écriture) correspondante. C'est la manière recommandée de retransmettre la chaîne reçue depuis un hook, par exemple obj.Data.(indexOp).

💡Exemples
Construire une opération d'indexation par parenthèses.
op = nelson.indexing.IndexingOperation('Paren', {2});
char(op.Type)
op.Indices{1}
Appliquer un tableau d'opérations à une valeur avec la forme dynamique value.(indexOp).
data = struct('f', {[1 2 3], [4 5 6 7]});
chain = [nelson.indexing.IndexingOperation('Paren', {2}), ...
         nelson.indexing.IndexingOperation('Dot', {}, 'f')];
data.(chain)   % équivaut à data(2).f
🔗Voir aussi
nelson.indexing.IndexingOperationTypenelson.mixin.indexing.RedefinesParen
🕔Historique des versions
Version Description
2.0.0 version initiale
Modifier cette page sur GitHub