我有一个枚举的抽象类:
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'
答案 0 :(得分:3)
@ gdejohn的答案是正确的,但我还要注意,通常直接引用枚举实例的类型非常有意义。通常你会写这样的代码:
void test(Foo foo) {
if (foo!=bar) {
print("Not bar!");
}
}
答案 1 :(得分:1)
因为bar
是枚举实例,所以它只是一个值,而不是一个类型。但它确实具有比Foo
更具体的类型,您可以通过在其前面添加\I
来表示。
void test(Foo foo) {
if (!is \Ibar foo) {
print("Not bar!");
}
}