如何在Scala泛型函数中使用嵌套类型?我想实现类似的东西
implicit def basicDBList2List[List[A]](value : BasicDBList) = value.toList.asInstanceOf[List[A]]
编译器给出以下错误:
scala: not found: type A
implicit def basicDBList2List[List[A]](value : BasicDBList) = value.toList.asInstanceOf[List[A]]
^
答案 0 :(得分:2)
当你写:
implicit def basicDBList2List[List[A]](value: BasicDBList) = ...
......这并不意味着你的意思。您正在声明一个名为List
的新类型参数,而不是引用库中现有的List
特征!您还声明新定义的List
类型需要一些类型参数,您称之为A
,但实际上您无法引用它。
你可能意味着:
implicit def basicDBList2List[A](value: BasicDBList): List[A] = ...
...表示,对于任何类型A
,您都可以将BasicDBList
转换为List[A]
。
这是粗略的代码,原因有两个:
BasicDBList
班级实际包含哪种类型?可能没有任何可能的A
。你很可能在运行时获得ClassCastException
。BasicDBList
到List[A]
的隐式转换?这几乎总是一个坏主意。答案 1 :(得分:0)
我认为最好是这样:
implicit def basicDBList2List[A](value : BasicDBList) = value.toList.asInstanceOf[List[A]]