문제

If I have a struct with a fieldname 'fieldname', is it possible to access the data in that field using only the variable?

ie.

x = 'fieldname'

is it possible to do

data = struct.(x) in some way? I want to use the string in x as the field name.

도움이 되었습니까?

해결책

Yes, this is possible using the TAG_NAMES function:

tnames=TAG_NAMES(struct)
tindex=WHERE(STRCMP(tnames,'fieldname') EQ 1)
data=struct.(tindex)

The call to TAG_NAMES returns an array of strings representing the tags defined in struct. The WHERE statement returns the index in tnames of a string matching 'fieldname'. Finally, the index is passed to the struct.(tindex) operation, which extracts a field by its numeric tag index.

Of course, in a real application you'd want to check whether tindex was successfully matched to something, otherwise IDL will choke on the structure lookup with an index of -1.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top