迭代枚举的类实例

Flo*_*ann 3 ceylon

是否有一种简单的方法来迭代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"; }
Run Code Online (Sandbox Code Playgroud)

让我们说我想选择一件随机的西装,或者我想用他们的名字打印所有西装.

编辑:

明确地将所有套装添加到可迭代的工作中但我们必须再次列出所有可能的值.

{Suit+} suits = {spades, clubs, diamonds, hearts};
Run Code Online (Sandbox Code Playgroud)

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

gde*_*ohn 6

这可以通过以下方式完成ClassOrInterface.caseValues:

Suit[] suits = `Suit`.caseValues;
Run Code Online (Sandbox Code Playgroud)

关于返回的序列:

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