我有一个返回一个元组的函数,其中一项也是一个元组。
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/