检查枚举的类型 class

Check the type of an enumerated class

我有一个枚举摘要class:

shared abstract class Foo() of bar|baz {}

还有一个函数试图检查 Foo 是否不是 bar:

shared void test(Foo foo) {
    if (!is bar foo) {

    }
}

我收到错误

incorrect syntax: no viable alternative at token 'bar'

因为bar是一个枚举实例,它只是一个值,不是类型。但它确实有比 Foo 更具体的类型,您可以通过在它前面加上 \I.

来表示
void test(Foo foo) {
    if (!is \Ibar foo) {
        print("Not bar!");
    }
}

@gdejohn 的回答是正确的,但我还要指出,通常 直接引用枚举实例的类型没有多大意义。通常你会这样写代码:

void test(Foo foo) {
    if (foo!=bar) {
        print("Not bar!");
    }
}