枚举类型声明的原理(50分)

  • 主题发起人 主题发起人 kongkong
  • 开始时间 开始时间
K

kongkong

Unregistered / Unconfirmed
GUEST, unregistred user!
枚举类型声明为
var Card1: (Club, Diamond, Heart, Spade);
var Card2: (Club, Diamond, Heart, Spade);
则显示出错,而声明
var Card1, Card2: (Club, Diamond, Heart, Spade);
则正确。请教各位高手,能否说说其中的原理。
 
当然这样声明也可以
type Suit = (Club, Diamond, Heart, Spade);
var
Card1: Suit;
Card2: Suit;
但我想知道上面错误的原因。
 
一个过程或函数中重复定义
 
枚举类型声明实际上定义了常变量(我这样理解的)。
var Card1: (Club, Diamond, Heart, Spade);
也就是说定义了Club=0,Diamond=1, Heart=2, Spade=3。并且定义了Card1的取值范围。

如果这样
var Card1: (Club, Diamond, Heart, Spade);
var Card2: (Club, Diamond, Heart, Spade);
重新又去定义Club, Diamond, Heart, Spade这些值,自然不行。

不知道我这理解对不对。
 
晕,楼主的这种定义方法是所有标准教科书里都要举的例子,不过是反例。
呵呵。

var Card1: (Club, Diamond, Heart, Spade);
这种定义方法,其实是(标准写法)
type
enum = (Club, Diamond, Heart, Spade);
var
card: enum;
的简单写法。所以楼上的那种声明方法会导致冲突。
 
简单的说:
var Card1: (Club, Diamond, Heart, Spade);
var Card2: (Club, Diamond, Heart, Spade);
编译器会把两个(xxxx)分别当成两个不同的枚举类型,而这两个“不同”的枚举类型
却有相同的枚举值,这是不允许的,所以出错。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
421
import
I
后退
顶部