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

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

т.е.

x = 'имя поля'

можно ли это сделать?

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

5
задан cHao 12 August 2011 в 22:40
поделиться

1 ответ

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

7
ответ дан 14 December 2019 в 08:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: