Spark Scala MLlib 赋值语法

Spark Scala MLlib assignment syntax

我一直在阅读 https://spark.apache.org/docs/latest/ml-statistics.html 的指南,我注意到他们使用这种语法进行 val 赋值:

val Row(coeff1: Matrix) = Correlation.corr(df, "features").head

有人可以详细说明这是什么意思吗?这似乎类似于 Scala 处理正则表达式组提取的方式...

无非是一个pattern matching。为了使其更明显,您将其重写为:

val coeff1 = Correlation.corr(df, "features").head match {
  case Row(coeff1: Matrix) => coeff1
}

换句话说,它只是尝试匹配从 .head 调用返回的对象,并且在成功匹配时,它会创建对 Matrix 对象的引用 (coeff1)返回 Row.