首页 > 解决方案 > 我无法解释以下一行代码

问题描述

下面的代码是用scala编写的,

val Array(f, t) = readLine().trim().split(" +").map(_.toInt)

我无法理解val Array(f, t)

对我来说,Array是阶级。因此,我们只能创建对象,并且使用该对象,我们可以访问类的功能。否则我们可以访问 Array 类的静态方法,而无需为其创建对象。

-- 斯卡拉

def main(args: Array[String]): Unit = {
    val n = readInt
    val m = readInt
    val f = Array.ofDim[Int](100000)
    Arrays.fill(f, -1)
    for (e <- 1 to m) {
        val Array(f, t) = readLine().trim().split(" +").map(_.toInt)
        // Code continues
    }
} 

标签: arraysscala

解决方案


这就是所谓的模式匹配(例如,您可以Extractors进行检查)。您提到的代码意味着请将0数组中的第一个(索引)值分配给f,将第二个(索引1)元素分配给,并且数组t中不应有更多或更少的值。f和都是t新变量。

val Array(...)您还提到了与语法的混淆。它转换为以下方法:scala.Array.unapplySeq[T](x:Array[T])


推荐阅读