Wie kann ich das erreichen:scala Typparameter als Objekttyp
final case class ChairId(id: String)
trait GeneratorLike[TO, TC <: AbstractId] {
val prefix: String
def generate(): TC = TO.apply(prefix + "-" + UUID.randomUUID())
}
implicit object ChairIdGenerator extends GeneratorLike[ChairId.type, ChairId] {
val prefix: String = "CHAIR"
}
implicit def IdFn[TO, TC <: AbstractId](x: TO)(implicit ev: GeneratorLike[TO, TC]): GeneratorLike[TO, TC] = ev
//right now I can call:
ChairId.generate()
Ich mag nicht für diese Situation definieren Begleitobjekt, und ich fragte mich, ob es eine Chance gibt Objekt mit der Verwendung von implicits zu verlängern?
Wenn ich das tue (ich benutze TO als TypeObject und TC als TypeClass Benennung) idFn[TO, TC]
Ich möchte TO Objekt sein, das implementiert def apply(id: String): TC
kann ich das erzwingen? Und wie würde ich diese Funktion nutzen? Es fühlt sich völlig unmöglich Funktion auf Typ-Parametern zu nennen:/
aufrufen können Sie nicht anrufen Eine * Methode * für einen Typparameter. – pedrofurla