1

在 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 的(简化)语法是print <exp>. 枚举文字不是表达式吗?

4

1 回答 1

1

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

print some_type_e'VAL2;
于 2014-07-03T15:25:27.447 回答