2017-12-27 1178 views
3

我有一些类型标记的Scala代码,我需要为Java用户提供这些代码。我的问题归结为解决以下问题:手动创建类型标记

给定两个Scala类型标记,如何手动为Tuple2 [A,B]创建一个类型标记?

如果这有什么差别我的具体情况是有点简单: 我有一个一类的标签,我需要创建Tuple2 [字符串,A]代码类型

回答

4

类型标签通常用作暗含,所以隐式系统对它们非常熟悉。只要告诉斯卡拉你想要什么类型,并隐式地询问它。

def tupleTag[A : TypeTag, B: TypeTag]: TypeTag[Tuple2[A, B]] = implicitly 

如果可以实例化,Scala会这样做。如果它不能,这是一个编译器错误。在这种情况下,由于AB已经是具体的(因为它们有标签),因此Tuple2[A, B]也总是具体。

+0

你和你的隐性魔法:) – harel