は、次の点を考慮HListに封印された形質インスタンスを変換しますか?スカラ:</p> <pre><code>sealed trait baseData { def weight: Int def priority: Int } case class data1(override val weight: Int, override val priority: Int) extends baseData </code></pre> <p>にはどうすればHListに<code>data1</code>を変換し、次のシグネチャを持つ関数を定義します
def toHlist[A <: baseData] (data: A) = {}
Iは、形質を延びる複数のケースのクラスが存在することになるので、代わりに実際のケースクラスのtoHlist
関数に形質インスタンスに渡したいです。私もフィールドをハードコードしたくない。私は完全に汎用的なソリューションを探しています。
これはShapelessライブラリで実行できると確信していますが、どのように把握できていません。
EDIT
toHList
ニーズはように、ケースクラスのインスタンスにbaseData
ポインタを扱うことができるようにする:
val data: baseData = data1(1,2)
toHlist(data)
この理由は、我々は、複数のケースを持っているということですクラスはbaseData
に拡張されており、実行時までtoHlist
に渡すコードを知ります。
ありがとう!これは 'toHlist(data1(23、13))'で動作しますが、もし私たちが持っているものが基本特性へのポインタであれば、それはできません: 'val data:baseData = data1(23,13)'、 'toHlist(data ) '。私の場合は、実行時までどのクラスを渡すべきかわかりません。そこに任意のアイデア? –
上記を踏まえて質問を更新できますか? –
上記を参照してください。ありがとう! –