代码之家  ›  专栏  ›  技术社区  ›  Sergey Yakovlev

Spark Scala MLlib分配语法

  •  2
  • Sergey Yakovlev  · 技术社区  · 6 年前

    我一直在看导游 https://spark.apache.org/docs/latest/ml-statistics.html 我注意到他们在val赋值中使用了以下语法:

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

    有人能详细解释一下这意味着什么吗?这似乎类似于Scala处理正则表达式组提取的方式。。。

    1 回复  |  直到 5 年前
        1
  •  3
  •   Alper t. Turker    6 年前

    这只不过是一个 pattern matching .为了使其更加明显,您可以将其改写为:

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

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