检查枚举类的类型

时间:2017-08-13 06:44:31

标签: if-statement ceylon

我有一个枚举的抽象类:

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'

2 个答案:

答案 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!");
    }
}