枚举类型
编辑在计算机编程中,枚举类型(在R编程语言中也称为枚举、枚举或因子,在统计学中称为分类变量)是一种数据类型,由一组被称为该类型的元素、成员、枚举器或枚举器的命名值组成。枚举器的名称通常是标识符,在语言中表现为常量。枚举类型可以被看作是单位类型的一个退化的标签联盟。一个被声明为具有枚举类型的变量可以被赋予任何一个枚举器作为值。换句话说,一个枚举类型的值是彼此不同的,并且可以被比较和分配,但是程序员并没有指定在计算机内存中有任何特定的具体表示;编译器和解释器可以任意地表示它们。例如,一副扑克牌中的四种花色可能是四个枚举器,名为Club、Diamond、Heart和Spade,属于一个名为suit的枚举类型。如果一个变量V被声明为其数据类型为suit,我们可以将这四个值中的任何一个分配给它。尽管枚举器通常是不同的,但有些语言可能允许同一枚举器在类型的声明中列举两次。枚举器的名称在任何意义上都不需要在语义上完整或兼容。例如,一个叫做颜色的枚举类型可能被定义为由红色、绿色、斑马线、缺失和培根的枚举器组成。在一些语言中,枚举类型的声明也有意定义了其成员的排序;在其他语言中,枚举器是无序的;在其他语言中,隐含的排序产生于编译器将枚举器具体地表示为整数。一些枚举器类型可以被内置到语言中。例如,布尔类型通常是一个预定义的False和True值的枚举。许多语言允许用户定义新的枚举类型。枚举类型的值和变量通常用一些整数类型作为底层表示来实现。一些语言,特别是系统编程语言,允许用户指定用于每个枚举器的比特组合,这对于有效地将枚举器的集合表示为固定长度的比特字符串是很有用的。在类型理论中,枚举类型通常被看作是单位类型的标记联合体。因为这种类型的形式是
枚举类型的理由
编辑一些早期的编程语言最初并没有枚举类型。如果程序员想让一个变量,例如myColor,有一个红色的值,那么变量red将被声明并分配一些任意的值,通常是一个整数常数。然后,变量red将被分配给myColor。其他技术将任意值分配给包含枚举器名称的字符串。这些任意值有时被称为神奇的数字,因为通常没有解释这些数字是如何得到的,或者它们的实际值是否有意义。这些神奇的数字会使其他人更难理解和维护源代码。另一方面,枚举类型使代码更具有自我记录性。根据语言的不同,编译器可以自动为枚举器分配默认值,从而向程序员隐藏不必要的细节。这些值甚至可能对程序员不可见(见信息隐藏)。
枚举类型还可以防止程序员编写不合逻辑的代码,例如对枚举器的值进行数xxx算。如果要打印一个被分配了枚举器的变量的值,一些编程语言也可以打印枚举器的名称而不是它的基本数值。另一个优点是,枚举类型可以让编译器强制执行语义正确性。例如:myColor=TRIANGLE可以被禁止,而myColor=RED可以被接受,即使TRIANGLE和RED在内部都表示为1。从概念上讲,一个枚举类型类似于一个名词表(数字代码),因为该类型的每个可能值都被分配了一个独特的自然数。因此,一个给定的枚举类型是这个概念的具体实现。当顺序是有意义的和/或用于比较时,那么一个枚举类型就变成了一个顺序类型。
枚举类型的惯例
编辑编程语言往往有自己的,通常是多种编程风格和命名惯例。分配给枚举的变量通常是一个单数形式的名词,并经常遵循PascalCase或大写的惯例,而小写和其他则较少见。
几种编程语言中的语法
编辑帕斯卡和语法相似的语言帕斯卡在帕斯卡中,一个枚举类型可以通过在括号内的列表中列出数值来隐式声明。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/170719/