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 = new First()
val (tup, i) = first.tupleReturnType()
assert(tup == (1, 2, 3))
assert(i == 4)
}
我可以使用Any
type 来编译它,但我更喜欢特定的东西。有什么建议么?我已经研究过,但在其他地方没有发现这个特定的问题。
我尝试()
作为一种类型,但编译失败。
解决方案
我相信这在 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)
推荐阅读
- google-bigquery - 银行家对 BigQuery 的四舍五入
- javascript - 如何在 Node.js 中为无限请求维护网络连接
- ignite - 点燃缓存大小返回正确的值,但在尝试访问缓存时返回空值
- javascript - Angular - 使用过滤器组件根据多个条件显示组件
- file - 将文件保存在本地,以便通过电子邮件发送或在 Android 文件管理器中查看
- python - 未使用 0 初始化时,Pytorch 模拟无法收敛于凸损失函数
- angular - 如何在 Angular Material 中预设动态 mat-select 的元素
- groff - Groff, mom - 表格比页面宽度更宽
- apache-spark - 无法禁用或禁止 Hive 注册日志
- javascript - 如何修复:图像渲染:像素化错误