IDL: الوصول إلى حقول الهيكل باستخدام أسماء الحقول المخزنة في المتغيرات؟

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

  •  25-09-2019
  •  | 
  •  

سؤال

إذا كان لدي هيكل مع اسم "FieldName" الميداني ، فهل من الممكن الوصول إلى البيانات في هذا الحقل باستخدام المتغير فقط؟

بمعنى آخر.

x = 'fieldname'

هل من الممكن القيام به

البيانات = بنية. (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