简体   繁体   English

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

[英]Implement trait with type parameters in method

I have a problem with generics in Scala. 我在Scala中存在泛型问题。 I have two classes 我有两节课

import scala.reflect.ClassTag

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

}

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

Now I want to implement a class to pass from Int to String, something like this 现在我想实现一个从Int传递给String的类,就像这样

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

But I know this is exactly like 但我知道这是完全一样的

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

How can I do this without adding type parameters in the Transformation? 如何在转换中不添加类型参数的情况下执行此操作?

Thanks 谢谢

How can I do this without adding type parameters in the Transformation? 如何在转换中不添加类型参数的情况下执行此操作?

If you don't want generic type parameters, you can use 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] = ???
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM