如何在Scala中将嵌套泛型类型用作方法返回类型

时间:2019-02-19 00:58:51

标签: scala generics

我有几种方法希望使用嵌套的泛型类型作为其返回类型。

import scala.language.higherKinds

trait DBClient {
  def execute[T[U] <: DataStoreItem[U]](ops: ScanamoOps[Result[T]]): Future[U]
}

但这不起作用。我无法在返回类型中使用U。还有其他方法可以定义上述方法,在该方法中我可以在返回类型中使用嵌套类型U

我也尝试过:

trait DBClient {
  def execute[U, T <: DataStoreItem[U]](ops: ScanamoOps[Result[T]]): Future[U]
}

这也不起作用。感谢您的帮助,我对scala泛型和高阶类型非常陌生。所以请原谅我的无知。

1 个答案:

答案 0 :(得分:0)

我几乎是对的。

import scala.language.higherKinds

trait DBClient {
  def execute[T[U0] <: DataStoreItem[U0], U](ops: ScanamoOps[Result[T[U]]]): Future[U]
}