我一直在浏览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
调用返回的对象和成功匹配,它创建一个引用(coeff1
)到返回的Matrix
中包含的Row
对象。