我无法解释以下一行代码

时间:2019-04-20 13:54:27

标签: arrays scala

下面的代码是用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
    }
} 

1 个答案:

答案 0 :(得分:3)

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

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

相关问题