scala之在方法中使用类型参数实现特征

mq0036 阅读:22 2025-01-19 22:14:33 评论:0

我对 Scala 中的泛型有疑问。我有两个类(class)

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]) = ??? 
} 

如果不在转换中添加类型参数,我该如何做到这一点?

谢谢

请您参考如下方法:

How can I do this without adding type parameters in the Transformation?

如果不需要泛型类型参数,可以使用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] = ??? 
} 


标签:Scala
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号