0

如何在 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]]
                                                                                               ^
4

2 回答 2

2

当你写:

implicit def basicDBList2List[List[A]](value: BasicDBList) = ...

......这并不意味着你认为它意味着什么。您正在声明一个名为 的新类型参数List,而不是引用List库中的现有特征!您还声明您新定义的List类型需要一些您已调用的类型参数,A但您实际上无法引用它。

你的意思可能是:

implicit def basicDBList2List[A](value: BasicDBList): List[A] = ...

...这说明,对于任何类型A,您都可以将 a 转换BasicDBList为 a List[A]

不过,这是粗略的代码,原因有两个:

  1. BasicDBList您的课程实际上包含什么类型?恐怕没有任何可能A。你很可能会ClassCastException在运行时得到。
  2. 为什么要从BasicDBListto进行隐式转换List[A]?这几乎总是一个坏主意。
于 2013-04-20T02:36:49.357 回答
0

我认为最好是这样:

implicit def basicDBList2List[A](value : BasicDBList) = value.toList.asInstanceOf[List[A]]
于 2013-04-20T02:32:18.673 回答