类中通用类型的scala变量数

tmn*_*d91 4 generics scala type-safety

我正在为一个项目使用scala和scalaStorm,我目前正在使用来自github(https://github.com/velvia/ScalaStorm)的velvia的scalastorm库,并且我正在尝试丰富它。我想将类型安全性添加到默认为所有java对象的风暴元组中。在风暴中,存在称为螺栓的实体,它们以元组作为输入,并输出其他元组。我想做这样的事情:

class StormBolt[T*][K*]{
}
Run Code Online (Sandbox Code Playgroud)

所以我可以直接写:

class MyBolt[Int, Date, String][Int, String]{
}
Run Code Online (Sandbox Code Playgroud)

我没有找到让我以某种方式执行此操作的任何内容。感谢您提供实施此类功能的提示!在库中添加类型安全性不会感到遗憾!谢谢

Eug*_*nev 5

您可以使用简单的泛型类型执行此操作,也可以使用来自shapeless的HList(https://github.com/milessabin/shapeless/wiki/Feature-overview:-shapeless-2.0.0#heterogenous-lists

trait StormBolt[T, K] {
}

trait MyBolt extends StormBolt[(Int, Date, String), (Int, String)]
Run Code Online (Sandbox Code Playgroud)

或无形

trait StormBolt[T <: HList, K <: HList] {
}

trait MyBolt extends StormBolt[Int :: Date :: String :: HNil, Int :: String :: HNil] {
}
Run Code Online (Sandbox Code Playgroud)

借助无形状,您可以获得很多很棒的功能,可以查看功能概述,也许您会发现其中一些有用的功能