IDL: Доступ к структурам полей с использованием имен полей, хранящихся в переменных? - PullRequest
5 голосов
/ 11 мая 2010

Если у меня есть структура с именем поля 'fieldname', возможно ли получить доступ к данным в этом поле, используя только переменную?

т.е.1005 *

можно ли каким-то образом сделать

data = struct. (X)?Я хочу использовать строку в х в качестве имени поля.

1 Ответ

7 голосов
/ 11 мая 2010

Да, это возможно с помощью функции 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.

...