IDL: Доступ к полям структуры с использованием имен полей, хранящихся в переменных?
-
25-09-2019 - |
Вопрос
Если у меня будет структура с помощью поля поля «FieldName», возможно ли получить доступ к данным в этом поле, используя только переменную?
т.е.
x = 'fieldname'
Можно ли сделать
data = struct. (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.