Scala - порядок выполнения методов - PullRequest
0 голосов
/ 29 апреля 2018

Я создал код в InteliJ для тестирования поведения Карт:

object Maps {

  def main(args: Array[String]): Unit = {
    println("Hello")
  }

  def myMethod(myhash: Map[String, String]) = {
    for ((k, v) <- myhash) printf("key: %s, value: %s\n", k, v)

  }
  myMethod(Map("test1" -> "test2"))

  val m1 = Map[Int, Int](1 -> 1)

  for ((k, v) <- m1) printf("key: %s, value: %s\n", k, v)

}

Работает нормально, но я удивлен выполнением ЗАКАЗА.

Выход:

  key: test1, value: test2
    key: 1, value: 1
    Hello

Всегда ли действия в main выполняются последними? (после всех других методов)

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

В объекте scala, код вне метода main является частью конструктора, так как мы знаем, что конструктор вызывается во время создания объекта. Это причина того, что ваш код отображает содержимое карт.

0 голосов
/ 29 апреля 2018

Весь код, который находится внутри object Maps {...}, но не внутри метода, является частью Maps 'конструктора. Когда ваша программа выполняется, сначала создается объект Maps (который выполняет его конструктор), а затем для этого объекта вызывается метод main.

Так что да, код вне main (то есть код конструктора) будет выполняться перед кодом внутри main (и код внутри других методов будет выполняться, если и когда будут вызваны эти другие методы).

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