IDL: Zugriff auf struct Felder Namen Feld in Variablen gespeichert?
-
25-09-2019 - |
Frage
Wenn ich eine Struktur mit einem Feldnamen ‚Feldnamen‘ habe, ist es möglich, die Daten in diesem Bereich nur die Variable zugreifen?
dh.
x = 'Feldname'
ist es möglich, zu tun
data = struct. (X) in irgendeiner Weise? Ich möchte die Zeichenfolge in x als Feldnamen verwenden.
Lösung
Ja, das ist möglich mit der TAG_NAMES
Funktion:
tnames=TAG_NAMES(struct)
tindex=WHERE(STRCMP(tnames,'fieldname') EQ 1)
data=struct.(tindex)
Der Aufruf von TAG_NAMES
gibt ein Array von Strings, die die in struct
definierten Tags.
Die WHERE
Anweisung gibt den Index in tnames
eines String-Matching 'fieldname'
.
Schließlich wird der Index zu der struct.(tindex)
Operation übergeben, die ein Feld Extrakt durch
sein numerischer Tag-Index.
Natürlich in einer realen Anwendung würden Sie überprüfen möchten, ob tindex
erfolgreich war
sonst wird ersticken IDL auf der Struktur-Lookup mit einem Index angepasst, um etwas,
von -1.