IDL: Доступ к полям структуры с использованием имен полей, хранящихся в переменных?

StackOverflow https://stackoverflow.com/questions/2806058

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top