Scala - 方法执行的顺序

时间:2018-04-29 16:05:44

标签: scala runtime

我在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中的操作是否始终执行? (在所有其他方法之后)

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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