繁体   English   中英

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

[英]Scala how to specify a return type of tuple in a tuple

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

  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)   
  }

我可以使用Any类型进行编译,但我更喜欢特定的东西。 有什么建议? 我研究过但没有在其他地方找到这个具体问题。

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

我相信这在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) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM