Я не могу интерпретировать следующий однострочный код - PullRequest
0 голосов
/ 20 апреля 2019

Код ниже написан на scala,

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

Я не могу понять val Array(f, t).

Для меня Array это класс.В связи с этим, мы можем только создать объект, и с этим объектом мы можем получить доступ к функции класса.Или же Мы можем получить доступ к статическим методам класса Array, не создавая для него объект.

- scala

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 Ответ

3 голосов
/ 20 апреля 2019

Это называется сопоставлением с образцом (например, вы можете проверить this в Extractors ).Код, который вы упомянули, означает, что, пожалуйста, присвойте первое (индекс 0) значение в массиве с результатом f, присвойте второй (индекс 1) элемент t, и не должно быть больше или меньше значений вмассив.И f, и t являются свежими переменными.

Вы также упомянули путаницу с синтаксисом val Array(...).Это переводится следующим методом: scala.Array.unapplySeq[T](x:Array[T])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...