gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:19:17 25 4
gpt4 key购买 nike

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

  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 实例的公共(public)父类(super class)型是 scala.Product,所以你可以说:

def tupleReturnType(): (Product, Int) 

关于Scala如何在元组中指定元组的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56253774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com