浅析枚举类型(Enumerated types)
枚举类型定义了一系列有序值的集合。枚举变量就是从这个既定的集合中取某个值。集合中的有序值可以称为元素,元素一般从0开始索引(也就是元素的顺序号)。
定义一个枚举类型,采用以下的格式:
type typeName = (val1, ..., valn)
其中 typeName和每一个val都必须是有效的标识符。
VCL中有很多地方用到了枚举类型,比如Object Inspector中Form的BorderStyles属性就是,并且有一个下拉列表框选值,如下图:
我们举一个完整的例子来看看枚举的类型的方方面面。
1、新建一个Console Application。
2、然后我们直接输入下面的代码吧,请仔细看注释哟,如下:
program Project1;
{$APPTYPE CONSOLE}
usesSysUtils;
{ type中定义枚举类型}
typeTSize = (Small = 5, Medium = 10, BeforLarge, Large = Small + Medium);{ TSize中因为Medium被索引为10,Small被索引为5,所以Large的索引为10 + 5 = 15}TMyColor = (mcRed, mcBlue, mcGreen, mcYellow, mcOrange);{mcRed = 0, mcBlue = 1, mcGreen = 2, mcYellow = 3, mcOrange = 4}TAnswer = (ansYes, ansNo, ansMaybe = 1);{ ansMaybe 为 1, 那么ansYes = 0, ansNo = 1}
varSize: TSize; { 声明TSize枚举类型的变量}MyColor: TMyColor;Answer: TAnswer;MyCard: (Club, Diamond, Heart, Spade); { 也可以这样直接声明}//Card1: (Club, Diamond, Heart, Spade);{ 此句编译后导致错误,提示"Identifier redeclared"}
beginSize := BeforLarge; { Ord(Size) = 11}Writeln('BeforLarge在TSize中的索引为:' + IntToStr(Ord(Size)));{ 显示11,因为Medium被索引为10,因此其后序索引为11}Size := Large; { Ord(Size) = 15}Writeln('Large在TSize中的索引为:' + IntToStr(Ord(Size))); { 显示11}Size := TSize(6); { Ord(Size) = 6}Writeln('TSize(6)在TSize中的索引为:' + IntToStr(Ord(Size))); { 显示6}Inc(Size); { Ord(Size) = 7}Writeln('Inc(Size)在TSize中的索引为:' + IntToStr(Ord(Size))); { 显示7}{ 我们来看看TAnswer中元素的索引}Answer := ansYes;Writeln('ansYes在TAnswer中的索引为:' + IntToStr(Ord(Answer)));Answer := ansNo;Writeln('ansNo在TAnswer中的索引为:' + IntToStr(Ord(Answer)));Answer := ansMaybe;Writeln('ansMaybe在TAnswer中的索引为:' + IntToStr(Ord(Answer)));{ 因为ansNo和ansMaybe具有相同的索引值,所以两个元素表现为相同值}Readln;
end.
3、运行,以检验结果,如下:
Note
Enumerated constants without a specific value have RTTI(不指定元素的索引的枚举类型可以生成运行时类型信息(RTTI))
type SomeEnum = (e1, e2, e3);
whereas enumerated constants with a specific value, such as the following, do not have RTTI:(指定了元素索引的枚举类型将不可以生成运行时类型信息,如下所示)
type SomeEnum = (e1 = 1, e2 = 2, e3 = 3);
以上代码均在Delphi7中测试通过。
浅析枚举类型(Enumerated types)相关推荐
- enum枚举类型用法
文章目录 1. 枚举类型和枚举变量 1.1 枚举类型的定义和声明 1.2 枚举变量的定义和声明 2. 枚举变量和枚举常量的关联对应 3. 枚举类型和变量的应用 3.1 作为判断语句中的逻辑 3.2 一 ...
- 《Java SE实战指南》06-08:枚举类型(Enumerated types)
内容导航: 前言 1.定义 2.使用场景 3.高阶应用 前言 在现实场景中,我们发现某类事物包含的名称.范围和含义是有限的,都可以列举出来. 方向:北.南.东.西: 季节:春季.夏季.秋季.冬季: 月 ...
- c语言枚举类型编程,浅析C语言枚举类型
在学习C语言的结构体过程中,我们接触到比较重要的内容要数枚举类型这一环了.那么到底什么是C语言中的枚举类型呢?它在我们编写程序时又起着什么样的作用呢?下面课课家小编就为大家简单介绍C语言中的枚举类型和 ...
- 巧用 TypeScript Literal Types 模拟枚举类型
看下面这个例子: let x: "hello" = "hello"; // OK x = "hello"; // ... x = " ...
- java枚举对象作用_浅析Java编程中枚举类型的定义与使用
定义枚举类型时本质上就是在定义一个类,只不过很多细节由编译器帮您补齐了,所以某些程度上,enum关键字的 作用就像是class或interface. 当您使用"enum"定义枚举类 ...
- Emun 枚举类型使用浅析——包括enumSet enumMap
啥也不说了,直接贴代码~记录一下,方便以后使用. 请执行TestEnum类查看效果~ 1.Enum 类Color /*** */ package hpf.test;import java.util.E ...
- enum枚举类型用法浅析
定义: 枚举类型定义用关键字enum标识,形式为: enum 标识符 { 枚举数据表 }: (1)enum是关键字,标识枚举类型.定义枚举类型必须用enum开头. (2)枚举数据表中的名字是程序员自己 ...
- 在java中关于枚举类型的特性_java枚举类型小结
JDK5.0之前,我们一般选择使用 interface 来保存常量组,以此来弥补 JDK 中没有枚举类型的缺陷,从JDK5.0开始,Sun引进了一个全新的关键字 enum 来定义一个枚举类.同inte ...
- DELPHI设置枚举类型size
delphi枚举类型长度默认为2个字节(单字),而在C中枚举为4个字节(双字),如果需要跨这两个平台编程,传输结构时会由于数据长度不一造成灾难. 经过查找资料,原来delphi可以通过{$Z+} {$ ...
最新文章
- 【Harvest源码分析】GetF0CandidateContour函数
- jsp中如何运行java_从上帝视角看Java如何运行
- Markdown创建页面和目录?
- php弹出第一个数组中,PHP array_search始终返回数组的第一个键
- leetcode15. 三数之和(三指针)
- android int 首位值_Android应用视图的管理者Window
- 百度SEO站群最新易支付源码完整版 已pj全解密
- JS-函数(匿名-自调用-回调)-递归
- Android系统Camera录像过程分析
- python迭代计算pi_python使用三角迭代计算圆周率PI的方法
- 简单实用的易语言短信接口demo
- Python代码转EXE程序
- 根据数据文件sql生成报告rpt
- php 改变图片大小,如何把照片尺寸改小 电子照片尺寸怎么改
- IDEA如何新建一个source folder
- linux无法访问移动硬盘,移动硬盘“无法访问”的解决方案
- Windows 下 VS 配置 OpenGL 环境
- puts()函数详解
- PCL学习笔记一入门(更新中)
- NLP入门:pyltp的介绍与使用