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

 

转载于:https://www.cnblogs.com/wintertone/p/6610448.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值