scala变量类中的泛型类型

时间:2014-12-21 00:10:26

标签: scala generics type-safety

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

class StormBolt[T*][K*]{
}

所以我可以直接写:

class MyBolt[Int, Date, String][Int, String]{
}

我没有发现让我以某种方式做到这一点的任何事情。 我很欣赏任何实现此功能的提示!添加类型安全到库不会是一个耻辱! 谢谢

1 个答案:

答案 0 :(得分:5)

您可以使用简单的泛型类型或使用无形(https://github.com/milessabin/shapeless/wiki/Feature-overview:-shapeless-2.0.0#heterogenous-lists

中的HList
trait StormBolt[T, K] {
}

trait MyBolt extends StormBolt[(Int, Date, String), (Int, String)]

或无形

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

trait MyBolt extends StormBolt[Int :: Date :: String :: HNil, Int :: String :: HNil] {
}

没有形状你可以获得很多很酷的功能,你可以看看功能概述,也许你会发现它们中的一些很有用