为什么e中不允许以下声明?

时间:2014-07-03 09:14:41

标签: e

在电子文件中,说:

是完全合法的
print 5;

但与此同时,以下事情不起作用:

type some_type_e : [ VAL1, VAL2 ];
print VAL2;  // issues a compile error

解析器期望VAL2是变量名,不会将其解释为常量。

与此同时,这是允许的:

var some_int : int = 10;
if some_int != 5 {
  print "Some int not 5"
};

var some_enum : some_type_e = VAL1;
if some_enum != VAL2 {
  print "Some enum not VAL2";
};

在这种情况下,VAL2被解释为常数。

打印的(简化)语法为print <exp>。枚举文字不是表达式吗?

1 个答案:

答案 0 :(得分:1)

我已经弄清楚了。 VAL2本身作为一个常数是没有意义的。必须使用类型名称进行限定。正确的方法是:

print some_type_e'VAL2;