1

我有一个枚举抽象类:

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

还有一个尝试检查 aFoo是否不是 a的函数bar

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

    }
}

我得到错误

incorrect syntax: no viable alternative at token 'bar'
4

2 回答 2

3

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

void test(Foo foo) {
    if (foo!=bar) {
        print("Not bar!");
    }
}
于 2017-08-13T20:53:20.690 回答
2

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

void test(Foo foo) {
    if (!is \Ibar foo) {
        print("Not bar!");
    }
}
于 2017-08-13T08:31:16.720 回答