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)
我没有找到让我以某种方式执行此操作的任何内容。感谢您提供实施此类功能的提示!在库中添加类型安全性不会感到遗憾!谢谢
您可以使用简单的泛型类型执行此操作,也可以使用来自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)
借助无形状,您可以获得很多很棒的功能,可以查看功能概述,也许您会发现其中一些有用的功能