您的位置:首页 > 产品设计 > UI/UE

BuildYourOwnLisp Why we need enum

2016-06-08 00:00 489 查看

枚举

你或许已经注意到了,
lval
type
err
字段的类型都是
int
,这意味着它们皆由整数值来表示。
之所以选用
int
,是因为我们将为每个整数值赋予意义,并在需要的时候进行解读。举例来说,我们可以制定这样的规则:

如果
type
为 0,那么此结构体表示一个数字。

如果
type
为 1,那么此结构体表示一个错误。

这是个简单而高效的方法。
但如果我们的代码中充斥了类似于 0 和 1 之类的“魔法数字”(Magic Number),程序的可读性就会大大降低。如果我们给这些数字起一个有意义的名字,就会给代码阅读者一些有用的提示,提高可读性。
C 语言为此提供了语言特性上的支持——枚举(
enum
)。
/* Create Enumeration of Possible lval Types */
enum { LVAL_NUM, LVAL_ERR };

enum
语句声明了一系列整型常量,并自动为它们赋值(译者注:从 0 开始,依次递增)。上面的代码展示了如何为
type
字段声明枚举值。
另外,我们还需要为
error
字段也声明一些枚举值。目前,我们需要声明三种类型的错误,包括:除数为零、操作符未知、操作数过大。代码如下:
/* Create Enumeration of Possible Error Types */
enum { LERR_DIV_ZERO, LERR_BAD_OP, LERR_BAD_NUM };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: