遍历枚举值

Iterating over enumeration values

假设我在锡兰有这个枚举:

abstract class Suit()
        of hearts | diamonds | clubs | spades {}

object hearts extends Suit() {}
object diamonds extends Suit() {}
object clubs extends Suit() {}
object spades extends Suit() {}

我想迭代这些值。在 Java,我会做 Suit.values()。锡兰有类似的东西吗?

我试图自己定义它,但没有成功,因为 Ceylon 中没有静态成员?我应该只在顶层定义吗:

Suit[4] suites= [hearts, diamonds, clubs, spades];
for (suit in `Suit`.caseValues) {
    // ...
}

Try online

注意:因为它使用元模型,所以它有点慢——肯定没有 Enum.values() 快。如果您要经常使用它,请缓存结果。