私は、順序をコンストラクタの名前で並べるのではなく、定義の順序を反映させたいと思っています。
ClassSymbol
APIのknownDirectSubclasses
は、順序付けられたシーケンスではなく、一連のシンボルを返すため、これは期待するほど楽しいものではありません。私はスカラックの内部の専門家ではないが、according to Eugene Burmako(誰がいる)の署名は、knownDirectSubclasses
の署名はscalacで起こっていることを反映している。
私は何年もの間、complaining about thisでした。ところで、様々な点で私はreading positions off the symbolsのようなものを試しましたが、実際には機能しません。
シェパレスの一般的な機械はシールされた特性をその製品を注文する副産物として表しているため、ここで決定する必要があります。確定的なものを維持するために、それはケースを注文するコンストラクタの名前を使用しています。
// Entering paste mode (ctrl-D to finish)
sealed trait Letters
case object B extends Letters
case object A extends Letters
// Exiting paste mode, now interpreting.
defined trait Letters
defined object B
defined object A
scala> shapeless.Generic[Letters]
res5: shapeless.Generic[Letters]{type Repr = shapeless.:+:[A.type,shapeless.:+:[B.type,shapeless.CNil]]} = [email protected]
これはあなたが望むものであるならば、あなたはすべてのセットばかりしている型崩れ搭載の汎用的な導出にgoodtutorialを見つけます詳細を確認してください。残念ながら、ほとんどの場合、それは(East
、North
、South
、West
?Blue
、Green
、Red
?)しかし、あなたが望むものはおそらくありませんし、何を(定義順)欲しいのは合理的に可能ではないようです。
例は、例示のみであるかもしれないが、それの顔に、アルファベット順に(型崩れが提供するものである)を正確に何のために求められていますですここに;-) –
@MilesSabinフェア十分!それは、アルファベットのコンストラクタ名があなたが望むところであると私が考えることができる唯一の例です。 :) –