我有一個多態的功能,可以將列表成爲集:將一個額外的參數傳遞給多態函數?
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
已更正,謝謝! –