我无法解释以下一行代码

问题描述 投票:-1回答:1

下面的代码是用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
    }
} 
arrays scala
1个回答
3
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.