Ich habe eine polymorphe Funktion, die Listen in Sätze verwandeln kann:Ein zusätzliches Argument in eine polymorphe Funktion übergeben?
import shapeless.PolyDefns.~>
import shapeless._
val lists = List(1,2) :: List("A", "B") :: List(1.1, 2.2) :: HNil
object sss extends (List ~> Set) {
def apply[T](l:List[T]):Set[T] = {
l.toSet
}
}
lists.map(sss) // I want: Set(1,2) :: Set("A", "B") :: Set(1.1, 2.2) :: HNil
Aber was, wenn ich das Verhalten dieser Funktion ändern wollen - ich will jetzt ein zusätzliches Argument hinzuzufügen, die das Element in der Eingabe angeben werden Liste sollte in das Set gelegt werden. Hier ist eine falsche Syntax - kannst du mir den richtigen Weg zeigen?
object sss extends (List ~> Set) { // Compiler says no!
def apply[T](i:Int)(l:List[T]):Set[T] = {
l.slice(i,i+1).toSet
}
}
Ich denke, dies nicht möglich ist, weil das zusätzliche Argument nicht mehr passen die Unterschrift Liste macht ~> Set, so wie kann ich dies zu überwinden?
Etwas falsch: '// Ich will: 1 ::" A ":: 3.5 :: HNil' – pedrofurla
korrigiert, danke! –