scala - 在 Scala 中解构复合元组

标签 scala

我有一个返回一个元组的函数,其中一项也是一个元组。

def foo: (Any, (Any, Any))

实际类型并不是真正的Any,但这是实际代码的简化(因此,为了解决这个问题,我将其称为复合元组)。

现在我像下面这样解构这个元组,希望用a1,a2,a3进行计算。

val (a1, bar) = foo
val (a2, a3) = bar

有一个衬里可以做到这一点吗?

最佳答案

当然!您可以用同样的方式进行模式匹配。

def foo: (Any, (Any, Any)) = (1, (2, 3))

scala> val (a1, (a2, a3)) = foo
a1: Any = 1
a2: Any = 2
a3: Any = 3

这是可行的,因为您有一个 Tuple2[Any, Tuple2[Any, Any]],并且 Tuple2 定义了一个 unapply 方法允许发生这种模式匹配。

关于scala - 在 Scala 中解构复合元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29303046/

相关文章:

scala - 简单的 ScalaFx TableView 示例未编译

performance - 数据类型对 Spark/Scala 中的内存有多重要?

scala - 返回存在类型有意义吗?

eclipse - Scala IDE 可以建议自动导入包吗?

scala - 检查 Scala 变量类型的最佳方法是什么?

java - 在 Scala 中,如何子类化具有多个构造函数的 Java 类?

xml - 在 Scala 中生成格式化的 XML

scala - 在 elastic4s 中创建后如何更改索引的设置?

java - Java 中有什么东西接近于 Scala 中的并行集合吗?

scala - 如何选择以公共(public)标签开头的所有列