0
私はこのコードはシェイプレス:アラインメントがシングルトンタイプでは機能しないのはなぜですか?
import shapeless._
import record._
import ops.record._
import ops.hlist.Align
import syntax.singleton._
case class From(i: Int, s: String, a: Int, b: Int, c: Int)
case class To(j: Int, s1: String, s2: String, a: Int, b: Int, c: Int)
val f = From(1, "FROM", 1, 1, 1)
val fromGen = LabelledGeneric[From]
val toGen = LabelledGeneric[To]
val lgenRepr = fromGen.to(f)
val modified = lgenRepr.renameField('i, 'j) - 's + ('s1 ->> "S1") + ('s2 ->> "S2")
val align = Align[modified.type, toGen.Repr]
toGen.from(align(modified))
をコンパイルすると予想しかし
could not find implicit value for parameter alm: shapeless.ops.hlist.Align[modified.type,toGen.Repr]
val align = Align[modified.type, toGen.Repr]
に失敗した場合がありlabelled.FieldType
を使用して必要なタイプを構築するとa trickがあるが、それはそうならば、フィールドを削除する方法を説明していませんAlign
をシングルトンタイプで動作させることは不可能です。これらのフィールドの処理方法を知っておくと便利です。