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 方法之外的代码是构造函数的一部分,因此我们知道在创建对象时调用构造函数。这就是您的代码显示地图内容的原因。
我在 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 方法之外的代码是构造函数的一部分,因此我们知道在创建对象时调用构造函数。这就是您的代码显示地图内容的原因。