Если у меня есть структура с именем поля 'имя поля', действительно ли возможно получить доступ к данным в том поле с помощью только переменную?
т.е.
x = 'имя поля'
можно ли это сделать?
данные = структура. (x) в некотором роде? Я хочу использовать строку в x как имя поля.
Да, это возможно с помощью функции TAG_NAMES
:
tnames=TAG_NAMES(struct)
tindex=WHERE(STRCMP(tnames,'fieldname') EQ 1)
data=struct.(tindex)
Вызов TAG_NAMES
возвращает массив строк, представляющих теги, определенные в struct
.
Оператор WHERE
возвращает индекс в tnames
строки, соответствующей 'fieldname'
.
Наконец, индекс передается в операцию struct. (tindex)
, которая извлекает поле по
его числовому индексу тега.
Конечно, в реальном приложении вы захотите проверить, был ли tindex
успешно
сопоставлен с чем-то, иначе IDL будет подавлять поиск структуры с помощью индекса {{1} } из -1.