IDL 結構體


1.創建結構體

  (1) 命名結構體

  創建具有兩個成員變量A、B的命名為str1的結構體

IDL> struct1={str1,a:1,b:2}
IDL> help,struct1,/structure
** Structure STR1, 2 tags, length=4, data length=4:
   A               INT              1
   B               INT              2

  結構體struct1的基本信息:名稱為str1,成員變量為兩個:成員A整型變量值為1;成員B整型變量值為2

  命名結構體支持結構體繼承,如

IDL> struct2={str2,inherits str1,c:3}
IDL> help,struct2,/str
** Structure STR2, 3 tags, length=6, data length=6:
   A               INT              0
   B               INT              0
   C               INT              3

  可以用replicate函數創建結構體數組,調用方法如下

IDL> structs=replicate(struct2,10)
IDL> help,structs
STRUCTS         STRUCT    = -> STR2 Array[10]

  (2) 匿名結構體

  與創建命名結構類似,區別在於創建時不需要賦予結構體名

IDL> person={name:'jack',country:'USA',work:'Esri'}
IDL> help,person
** Structure <c9fa750>, 3 tags, length=48, data length=48, refs=1:
   NAME            STRING    'jack'
   COUNTRY         STRING    'USA'
   WORK            STRING    'Esri'

2.訪問結構體

IDL> print,person.name
jack
IDL> print,person.(0)
jack

  結構體一旦創建,其成員變兩個數與數據類型將無法修改,賦值操作時結構體成員變量會自動進行類型轉換,示例代碼如下

IDL> person.name=indgen(3)
% Expression must be a scalar in this context: <STRING    Array[3]>.
% Execution halted at: $MAIN$          
IDL> person.name=678
IDL> help,person.name
<Expression>    STRING    = '     678'

3.結構體操作函數

結構體操作函數
函數名 用途
create_struct() 根據給定名字和值創建結構體,並能連接結構體
help,***,/Struct 返回輸入結構體的相關信息
n_tags 返回結構體中的成員個數
tag_names() 返回結構體成員的名字

 

  

 

 

 

 

以結構體遍歷功能為例

pro traverse_struct
  ;初始化結構體
  struct1={a:1,b:2,c:3,d:'a'}
  ;獲取成員變兩個數
  tagnumber=n_tags(struct1)
  ;獲取成員名字
  tagnames=tag_names(struct1)
  ;依次輸出成員變量
  for i=0,tagnumber -1 do begin
    print,'Name:',tagnames[i],'value:',struct1.(i)
  endfor
end

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM