IDL学习:语法基础-结构体

        结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“属性”(亦称之为“成员”),这些成员可以是变量、数组、字符串以及结构等类型数据。IDL中常用于函数返回值(PS:因为IDL中函数最多只能返回一个参数,因此当需要返回多个变量时,可以组合成一个变量作为返回值)。

        注:属性名必须的命名规范必须和变量命名一致,不能含有汉字

>>Pig = Create_struct(['名字','weight'],'来福',200,Name='Pelosi')
% CREATE_STRUCT: Illegal tag name: 名字.
% Execution halted at: $MAIN$  

        PS:我习惯matlab的用法,喜欢称之为“属性”,相对来说,“成员”更为贴切。

1. 创建结构体

        IDL结构体包含两个结构体类型:命名结构体(署名结构体,typename)、匿名结构体。

1.1 直接创建

1.1.1 命名结构体

       创建结构体时用大括号“{}”, 命名结构体创建之时需要赋予结构体名称。

       创建格式:变量名={署名,属性1::值1,属性2:值2……}

>> ; 之所以称之为命名结构体,是因为代码中有一个名称'Dog',name和weight是结构体中的属性,属性后面是对应的属性值,两者用“:”连接
>>help,Pet ; 结构体Pet信息,名称DOG,2个成员变量(属性name、weight)及对应的属性值
** Structure DOG, 2 tags, length=32, data length=32:NAME            STRING    '来福'WEIGHT          STRING    '20Kg'
>>Pet.NAME        ; 查看属性name属性值
来福
>>Pet.WEIGHT      ; 查看属性weight的属性值
20Kg
>>Pet = {Pig,name:'Pelosi',weight:'200Kg'}        ; 例子2
>>help,pet
** Structure PIG, 2 tags, length=32, data length=32:NAME            STRING    'Pelosi'WEIGHT          STRING    '200Kg'

1.1.2 匿名结构体

        与命名结构体相比,无需署名

        创建格式:变量名={署名,属性1::值1,属性2:值2……}

>>Pig = {name:'Pelosi',weight:'200Kg'}
>>help,Pig
** Structure <34b4c630>, 2 tags, length=32, data length=32, refs=1:NAME            STRING    'Pelosi'WEIGHT          STRING    '200Kg'

        注:显示的时候,由于没有署名,所以显示的是存储的ID号。

1.2 利用函数创建结构体

1.2.1 Create_struct函数

        可以利用Create_struct()函数创建结构体。

        函数语法:

        Result = CREATE_STRUCT( [Tag1, Values1, ..., Tagn, Valuesn] [, Structuresn] [, NAME=string])

        Result = CREATE_STRUCT( [Tags, Values1, ..., Valuesn][, Structuresn] [, NAME=string])

        其中参数name表示署名,例如创建一个Pig结构体(命名结构体和匿名结构体),具有name和weight属性

  •  第1种函数用法创建结构体
>>Pig = Create_struct('name','来福','weight','20Kg',Name='Pelosi')    ; 命名
>>help,Pig
** Structure PELOSI, 2 tags, length=32, data length=32:NAME            STRING    '来福'WEIGHT          STRING    '20Kg'
>>Pig = Create_struct('name','来福','weight','20Kg')    ; 匿名
>>Pig
{"NAME": "来福","WEIGHT": "20Kg"
}
  • 第2种函数用法创建结构体
>>Pig = Create_struct(['name','weight'],'来福',200,Name='Pelosi')
>>Pig
{"NAME": "来福","WEIGHT": "     200"

        此外,Create_struct()函数还可以在原有的基础上链接现有的结构体。

>>Pig = Create_struct(['name','weight'],'来福',200,Name='Pelosi')
>>Pet = Create_struct(Pig,'country','USA')
>>help,Pig
** Structure PELOSI, 2 tags, length=32, data length=32:NAME            STRING    '来福'WEIGHT          STRING    '     200'
>>help,Pet
** Structure <374499a0>, 3 tags, length=48, data length=48, refs=1:NAME            STRING    '来福'WEIGHT          STRING    '     200'COUNTRY         STRING    'USA'

1.2.2 Replicate函数

      也可以用Replicate()函数创建结构体,

语法:

        Result = REPLICATE( Value, D1[, ..., D8] )

>>Name = REPLICATE('Hlz', 5, 5)
>>Name
Hlz Hlz Hlz Hlz Hlz
Hlz Hlz Hlz Hlz Hlz
Hlz Hlz Hlz Hlz Hlz
Hlz Hlz Hlz Hlz Hlz
Hlz Hlz Hlz Hlz Hlz
>>help,Name
NAME            STRING    = Array[5, 5]
>>Name = REPLICATE(Pig, 2, 2)
>>Name
[{"NAME": "来福","WEIGHT": "     200"},{"NAME": "来福","WEIGHT": "     200"},{"NAME": "来福","WEIGHT": "     200"},{"NAME": "来福","WEIGHT": "     200"}
]
>>help,name
NAME            STRUCT    = -> PELOSI Array[2, 2]

2 结构体操作

2.1 查看结构体

        可以利用help函数、N_Tags()函数、Tag_Name()函数查看相关信息;

  • help函数:查看结构体相关信息,最全显示
  • N_Tags()函数:查看结构体属性(成员)个数
  • Tag_Name()函数:显示结构体的属性名(成员名)
  • .Tname:显示变量类型
  • .typename:显示署名
>>Pig = Create_struct(['name','weight'],'来福',200,Name='Pelosi')
>>help,Pig
** Structure PELOSI, 2 tags, length=32, data length=32:NAME            STRING    '来福'WEIGHT          STRING    '     200'
>>Print,N_tags(Pig)
>>Print,Tag_names(Pig)
NAME WEIGHT
>>Print,Pig.TNAME
STRUCT
>>Print,Pig.TYPENAME
PELOSI

         可以利用“结构体.属性”或“结构体.(Tag_Index)”来查看属性值。

         注:Tag_Index 是一个表达式,其结果被视为一个标签位置(具体某一个数),为了让 IDL 解析器理解这种情况,您必须将 Tag_Index 括在括号中。 这不是数组索引操作,因此在此上下文中不允许使用方括号 [ ]。

>>Pig = Create_struct(['name','weight','Country'],'来福',200,'USA',Name='Pelosi')
>>Pig.name
来福
>>Pig.(0)
来福
>>Pig.(0:1)Pig.(0:1)^
% Syntax error.
>>Pig.(0,1)Pig.(0,1)^
% Syntax error.

2.2 修改结构体

        结构体一旦被创建,其属性(成员)变量的个数与类型将无法修改,赋值操作时结构体属性(成员)变量会自动类型转化。

>>Pig = Create_struct(['name','weight'],'来福',200,Name='Pelosi')
>>Pig
{"NAME": "来福","WEIGHT": 200
}
>>Pig.NAME = '老妖婆'
>>Pig
{"NAME": "老妖婆","WEIGHT": 200
>>Pig.NAME = 9
>>Pig
{"NAME": "       9","WEIGHT": 200
}
>>Pig.NAME = Indgen(2)
% Expression must be a scalar in this context: <STRING   Array[2]>.
% Execution halted at: $MAIN$  

        分析:上述代码中,可以直接将原有的成员Name的值改为"老妖婆",但改为数字9的时候,自动变成字符串形式,改成数组类型的时候,程序报错。

3.3 新增属性

        可以利用函数create_struct()新增属性(成员)。

>>Pig = Create_struct(['name','weight'],'来福',200,Name='Pelosi')
>>Pig2
{"NAME": "来福","WEIGHT": 200,"COUNTRY": "USA"

        也可以利用结构体继承来新增属性(成员)。

>>Pig = Create_struct(['name','weight'],'来福',200,Name='Pelosi')
>>Pig2 = {Caiyingwen, inherits Pelosi}
>>Pig2
{"NAME": "","WEIGHT": 0
}
>>Pig3 = Pig 
>>Pig3
{"NAME": "来福","WEIGHT": 200

        不同于等号直接赋值,结构体“继承”只继承其属性(成员),为继承属性对应的值,相当于只赋值了表格的表头。

        可以在继承的基础上,新增属性。

>>Pig = Create_struct(['name','weight'],'来福',200,Name='Pelosi')
>>Pig4 = {Caiyingwen1, inherits Pelosi, Conntry:'中国台湾省'}
>>pig4
{"NAME": "","WEIGHT": 0,"CONNTRY": "中国台湾省"

3.3 删除属性

       水平有限,暂时未想到好的方法待以后补充。

不足之处,敬请斧正!

路漫漫其修远兮,吾将上下而求索

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246489.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hdfs数据节点分发什么协议_分布式文件系统HDFS解析

Hadoop 主要由HDFS和MapReduce 引擎两部分组成。最底部是HDFS&#xff0c;它存储Hadoop 集群中所有存储节点上的文件。HDFS 的上一层是MapReduce 引擎&#xff0c;该引擎由JobTrackers 和TaskTrackers组成。一、HDFS基本概念1、数据块HDFS默认的最基本的存储单位是64M的数据块&…

IDL学习:语法基础-指针、链表

本博客将介绍IDL语法基础中的指针、链表的创建及相关的用法。记录自己的学习整理理解 。 1. 指针 指针也就是内存地址&#xff0c;是用来存放内存地址的变量&#xff0c;指针可以理解为通讯地址&#xff0c;可以通过通讯地址查询具体的信息&#xff0c;而指针可以查询所指向的…

计算机等级考试java题型_计算机二级考试《java》试题及答案

计算机二级考试《java》试题及答案2017下半年计算机二级考试将于9月23日-26日举行&#xff0c;下面是小编为大家整理的计算机二级考试《java》试题及答案&#xff0c;欢迎参考~计算机二级考试《java》试题及答案一、判断题1. Java语言中的数组元素下标总是从0开始&#xff0c;下…

IDL学习:语法基础-对象、哈希表

本博客将介绍IDL语法基础中的对象、哈希表的创建及相关的操作发法。哈希表、链表都可以看做对象&#xff0c;包含了add、reserve、Sort等方法。记录自己的学习整理理解 。 1. 对象 对象是数据&#xff08;属性&#xff09;和程序&#xff08;方法&#xff09;封装在一起的实体…

hdfs中8031是什么端口号_在宿主机如何访问docker中hadoop的hdfs:ip:9000啊, 端口映射出来啊...

本人有一个3节点hadoop, 启动了3个docker容器, 众所周知, docker容器内服务的端口是可以映射到宿主机的端口的, 我采用-P将容器的所有端口映射到主机端口, 命令如下:docker run -it -v /Users/yc/hadoop/docker:/test -P -h h1 --name h1 sequenceiq/hadoop-docker /etc/bootst…

linux nginx安启动_linux下nginx编译安装启动

1、在指定目录解压包命令&#xff1a;tar -zxvf nginx-1.10.3.tar.gz解压后&#xff0c;在nginx-1.10.3同级目录下&#xff0c;创建nginx目录(编译安装目录)2、编译安装nginx是需要编译安装&#xff0c;在nginx-1.10.3目录下执行命令命令&#xff1a; ./configure --prefix/usr…

linux怎样自制库_如何制作自己的LINUX系统?

创建工作目录使用busybox生成根文件系统中的bin等目录创建服务启动脚本与inittab文件与fstab文件创建根文件系统的init脚本(initrc使用linuxrc&#xff0c;而initramfs使用init脚本&#xff0c;所以先删除busybox为initrc生成的默认的linuxrc文件&#xff0c;rm-rf$LINUX/linux…

茶苑机器人怎么看出来_小儿脑瘫怎么看出来?出现4个异常,该早点去看医生...

小儿脑瘫表现出来的症状是多种多样的&#xff0c;一般儿童三个月就能够展现出来&#xff0c;家长应该多观察孩子的一些异常情况&#xff0c;及时去医院做诊断&#xff0c;做到防患于未然。小儿脑瘫的表现有哪些&#xff1f;1、运动发育明显落后正常的儿童3个月能抬头&#xff0…

itil 容量管理流程_探索ITIL和DevOps的边界

其实在今天的运维领域&#xff0c;ITIL和DevOps之间的冲突还是蛮明显的&#xff0c;有些是表现在产品上&#xff0c;有些是表现在思维/理念上。ITIL在产品上以流程为核心目标的设计&#xff0c;很难满足自动化的要求&#xff0c;DevOps极力推崇工具/平台/自服务文化&#xff1b…

本博客IDL 学习目录

本博客非技术博客&#xff0c;而是总结我在学习IDL、编写IDL代码方面的博客&#xff0c;旨在方便各位可以通过我这篇博客直接选感兴趣的部分。本博客将会持续更新&#xff0c;不断补充…… IDL 学习 1. IDL 文本编码、代码补全快捷方式、IDL doc、格式器、行号显示设置 2. ID…

python中一个汉字是几个字节_数据库中汉字是几个字节

不依赖微软的库和WindowsAPI&#xff0c;没能试验成功&#xff01;######问题已解决&#xff0c;谢谢。######看这篇文章&#xff0c;讲的很清楚(&#xff1a;)这是从其他地方拷贝过来的) UNICODE环境设置 在安装Visual Studio时&#xff0c;在选择VC时需要加入unicode选项&…

Matlab 中@ 的用法

Matlab 中的用法主要有&#xff1a;函数句柄、函数表达式、调用父类以及类文件夹。 前两种有很多介绍&#xff0c;后两种涉及类&#xff0c;介绍的人很少。前2个例子&#xff0c;参考了其它博客&#xff0c;总感觉用法都写的不全&#xff0c;所以在此基础上&#xff0c;补充了3…

金蝶k3单据编码规则_金蝶K3存货跌价案例教程

目录案例介绍 后台设置 计提存货跌价准备显示计提表计提凭证模板设置计提凭证生成手工结转跌价准备案例介绍关于存货跌价准备&#xff0c;企业会计准则第1号存货相关规定如下&#xff1a;第十五条 资产负债表日&#xff0c;存货应当按照成本与可变现净值孰低计量。存货成本高于…

maven 关联源码插件_繁琐的任务简单化,Maven的插件机制

Maven的生命周期与Maven插件是项目绑定的&#xff0c;生命周期可以理解为项目构建步骤的集合&#xff0c;它定义了各个构建环节的执行顺序&#xff0c;有了这个顺序&#xff0c;Maven 就可以自动化的执行构建命令。Maven 的核心程序中定义了抽象的生命周期&#xff0c;生命周期…

php配置email支持_配置以及实现mail()函数

配置sendmail.ini文件error_logfileerror.log; create debug log as debug.log (defaults to same directory as sendmail.exe); uncomment to enable debuggingdebug_logfiledebug.log; if your smtp server requires authentication, modify the following two linesauth_use…

树莓派控制电机转速_怎样用树莓派控制直流电机的方向和速度

步骤1&#xff1a;DC的控制方向通过RPi电机使用RPi控制直流电机我们的下一个任务是使用树莓派上的python脚本和GPIO头控制直流电动机&#xff0c;这将在我们的脑海中产生一幅“机器人如何工作”的图景。您可以根据外面的天气来控制房间的风扇(因为您知道rpi会使用传感器)。完成…

双稳态继电器工作原理图_固态继电器只有单一的作用吗?带你了解不一样的固态继电器...

固态继电器简写SSR(Solid State Relay)&#xff0c;是一种全部又分离的固态电子元件(如光耦合器、晶体管、可控硅、电阻、电容、集成电路等)组成的无触点电阻开关&#xff0c;这里请注意&#xff0c;相比较与继电器、接触器&#xff0c;固态继电器是无触点的耦合开关。因此&…

c++switch实现猜拳_C语言实现人机猜拳游戏,非常适合C++小白练习的项目!

学习迷茫遇到问题了吗&#xff1f;现在关注微信公众号&#xff1a;C程序编程 免费获取进阶指导和学习资料&#xff01;本文福利在文末&#xff01;这是一个简单的猜拳游戏&#xff08;剪子包子锤&#xff09;&#xff0c;让你与电脑对决。你出的拳头由你自己决定&#xff0c;电…

bootstraptable获得所有行_2020广汽本田安全中国行·首届道路安全创新大赛成功举办...

两辆汽车分别搭载了代表着婴儿的红心&#xff0c;当两车相撞&#xff0c;被安全座椅包裹的红心安然无恙&#xff0c;而另一颗没有安全措施的红心直接裂开。画面配文"救救孩子"&#xff0c;让人格外揪心。这是来自2020年广汽本田安全中国行首届道路安全创新大赛公益广…

en55032最新标准下载_大型设备塔吊安装维保、安全检查及案例,94页PPT下载!

提示&#xff1a;点击↑上方"建筑安全技术"关注加入领取&#xff1a; 一级建造师课件&#xff1b; 二级建造师课件&#xff1b;注册安全工程师课件&#xff1b;目录&#xff1a;1、 塔吊的安装流程及使用的常规检查2、 塔吊维修保养3、 使用过程中存在的问题4、 …