Scala - 方法执行顺序

Scala - order of methods execution

我在 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)

}

它工作正常,但我对执行 ORDER 感到惊讶。

输出:

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

main 中的动作总是最后执行吗? (在所有其他方法之后)

所有在 object Maps {...} 内但不在方法内的代码都是 Maps 构造函数的一部分。执行程序时,首先创建 Maps 对象(执行其构造函数),然后在该对象上调用 main 方法。

所以是的,main 之外的代码(即构造函数代码)将 运行 在 main 内的代码之前(其他方法内的代码将 运行如果以及何时调用其他方法)。

在 scala 对象中,main 方法之外的代码是构造函数的一部分,因此我们知道在创建对象时调用构造函数。这就是您的代码显示地图内容的原因。