scala元组类型组成

mer*_*no1 7 types scala

给定一个元组类型

type T = (String, Int, String)
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以得到一个类型T1,其中T1将是

type T1 = (MyClass, String, Int, String)
Run Code Online (Sandbox Code Playgroud)

我希望能够宣布一个类似的课程

class TupleTypes[T] extends AnotherClass[T1]
Run Code Online (Sandbox Code Playgroud)

注意:元组大小未知且

type T1 = (MyClass, T)
Run Code Online (Sandbox Code Playgroud)

不会返回我想要的东西,它将返回(MyClass,(String,Int,String))这是不同的.

谢谢

Mil*_*bin 9

您可以使用无形的HList元组转换来完成此操作.

scala> import shapeless._ ; import Tuples._
import shapeless._
import Tuples._

scala> class MyClass ; val m = new MyClass
defined class MyClass
m: MyClass = MyClass@3859023a

scala> val t1 = ("foo", 23, "bar")
t1: (String, Int, String) = (foo,23,bar)

scala> val t2 = (m :: t1.hlisted) tupled
t2: (MyClass, String, Int, String) = (MyClass@3859023a,foo,23,bar)
Run Code Online (Sandbox Code Playgroud)


par*_*tic 5

在我看来,元组没有这样的构造,但是HList的行为与你展示的行为非常相似.它们被认为具有高级类型编程结构,根据您想要实现的目标,使用可能很困难.这是一个很好的入门者和一个很好的实现.