Scala如何在元组中指定元组的返回类型

Scala如何在元组中指定元组的返回类型,scala,Scala,我试图在元组中指定元组的返回类型: class First { def tupleReturnType(): (Any, Int) = { val tup = (1, 2, 3) // This can be variable in length val i = 4 (tup, i) } } 举个例子: "First Test" must "understand tuple type" in { val first

我试图在元组中指定元组的返回类型:

  class First {
    def tupleReturnType(): (Any, Int) = {
      val tup = (1, 2, 3) // This can be variable in length
      val i = 4
      (tup, i)   
    }
  }
举个例子:

  "First Test" must "understand tuple type" in {
    val first = new First()
    val (tup, i) = first.tupleReturnType()
    assert(tup == (1, 2, 3))
    assert(i == 4)   
  }
我可以使用
任何类型的
来编译,但我更喜欢特定的类型。有什么建议吗?我已经研究过了,但在别处没有发现这个具体的问题


我尝试将
()
作为一种类型,但编译失败。

我相信这在Scala 3/Dotty中正在改变,但现在,元组是
TupleN
类的实例,具有
N=1,2,3,…,22
。因此,为了实现您想要的,您需要某种封装所有元组类型的父类型

下面是
Tuple3
的样子:

final case class Tuple3[+T1, +T2, +T3](val _1 : T1, val _2 : T2, val _3 : T3) extends scala.AnyRef with scala.Product3[T1, T2, T3] with scala.Product with scala.Serializable {
  override def toString() : java.lang.String = { /* compiled code */ }
}
在这里,我们可以看到TupleN实例最常见的超类型是
scala.Product
,因此您可以说:

def tupleReturnType(): (Product, Int) 

谢谢-我试过了,效果很好-你有关于Scala 3的注释链接吗?