IDL: الوصول إلى حقول الهيكل باستخدام أسماء الحقول المخزنة في المتغيرات؟
-
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.
لا تنتمي إلى StackOverflow