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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗