我在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
中的操作是否始终执行? (在所有其他方法之后)
答案 0 :(得分:3)
object Maps {...}
内部但不在方法内的所有代码都是Maps
'构造函数的一部分。执行程序时,首先创建Maps
对象(执行其构造函数),然后在该对象上调用main
方法。
所以是的,main
之外的代码(即构造函数代码)将在main
内的代码之前运行(其他方法中的代码将在调用其他方法时运行)。
答案 1 :(得分:1)
在scala对象中,main方法之外的代码是构造函数的一部分,因此我们知道在创建对象时调用构造函数。这就是您的代码显示地图内容的原因。