3

有没有一种简单的方法来遍历 Ceylon 中类的所有枚举实例?

就像values()Java 枚举一样?

abstract class Suit() of hearts | diamonds | clubs | spades {
    shared formal String name; 
}
object spades extends Suit() { name => "Spades"; }
object clubs extends Suit() { name => "Clubs"; }
object diamonds extends Suit() { name => "Diamonds"; }
object hearts extends Suit() { name => "Hearts"; }

假设我想随机选择一套西装,或者我想按他们的名字打印所有西装。

编辑:

将所有套装显式添加到可迭代的作品中,但我们必须再次列出所有可能的值。

{Suit+} suits = {spades, clubs, diamonds, hearts};

有人能想出更好的东西吗?

4

2 回答 2

6

现在可以通过以下方式完成ClassOrInterface.caseValues

Suit[] suits = `Suit`.caseValues;

关于返回的序列

此序列是有序的,并且会跳过任何案例类型以仅包含案例值。

于 2014-07-04T10:24:54.047 回答
1

一种方法是使用元模型:

for (caseType in `class Suit`.caseTypes) {
    assert (is OpenClassOrInterfaceType caseType);
    print(caseType.declaration.name);
}
于 2013-10-17T09:14:50.367 回答