我有一个多态的功能,可以将列表成为集:将一个额外的参数传递给多态函数?
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
但是如果我想改变这个函数的行为 - 我现在想添加将在输入指定项目额外的参数清单应该放入集合中。这是一个不正确的语法 - 你能告诉我正确的方法吗?
object sss extends (List ~> Set) { // Compiler says no!
def apply[T](i:Int)(l:List[T]):Set[T] = {
l.slice(i,i+1).toSet
}
}
我认为这是失败,因为额外的参数使得它不再适合列表〜>设置的签名,所以我如何克服这个问题?
出错了:// //我要:1 ::“A”:: 3.5 :: HNil' – pedrofurla
已更正,谢谢! –