2012-12-23 24 views
2
def unreturn(lx: Sized[List[Int], Nat._1]): Int = lx head 

如何獲得使用無形的一個元素列表的頭部?這並不編譯:如何使用無定形在scala中實現[x] - > x?

No implicit view available from List[Int] => 
scala.collection.GenTraversableLike[v.A,List[Int]]. 

not enough arguments for method sizedOps: 
(implicit evidence$2: List[Int] => 
scala.collection.GenTraversableLike[v.A,List[Int]])shapeless. 
SizedOps[v.A,List[Int],shapeless.Nat._1]. Unspecified value parameter evidence$2. 

回答

5

你只需要在你的參數類型的類型成員:

def unreturn(lx: Sized[List[Int], Nat._1] { type A = Int }): Int = lx.head 

的問題是,知道有沒有(安全)的方式與任何其他A一起構建Sized[List[Int], _1],但編譯器仍需要證據。

相關問題