在方法中使用类型参数实现trait

时间:2016-06-01 13:28:54

标签: scala generics

我在Scala中遇到了泛型问题。我有两个班级

import scala.reflect.ClassTag

class Data[T: ClassTag](val list: List[T]) {

}

trait Transformation {
  def transform[T, U](data: Data[T]) : Data[U]
}

现在我想实现一个从Int传递给String的类,类似这样的

class FromInt2String extends Transformation {
  override def transform[String, Int](data: Data[String]) = ???
}

但我知道这就像

class FromInt2String extends Transformation {
  override def transform[T, U](data: Data[T]) = ???
}

如果不在转换中添加类型参数,我该怎么做?

由于

1 个答案:

答案 0 :(得分:4)

  

如何在不添加类型参数的情况下执行此操作   转化

如果您不想要通用类型参数,可以使用Abstract Types

trait Transformation {
  type T
  type U

  def transform(data: Data[T]) : Data[U]
}

class FromInt2String extends Transformation {
  override type T = String
  override type U = Int

  override def transform(data: Data[String]): Data[Int] = ???
}