gpt4 book ai didi

Scala App 初始化顺序

转载 作者:行者123 更新时间:2023-12-01 09:12:40 25 4
gpt4 key购买 nike

所以我有一个简单的 Scala 文件:

object Main extends App {
println("Init")

def test=println("Method")
}
Main.test
println(Main)
print("End")

当我将它作为脚本运行时,我得到以下输出:

$ scala Main.scala
Method
Main$$anon$1$Main$@2449a2da
End

我想知道为什么永远不会调用 println("Init") 行?我希望它在 Main 的初始化时被调用,这应该在调用它的方法时发生。

最佳答案

让我们仔细看看App trait scaladoc :

It should be noted that this trait is implemented using the DelayedInit functionality, which means that fields of the object will not have been initialized before the main method has been executed.

所以你必须做类似的事情:

object Main extends App {
println("Init")

def test=println("Method")
}
Main.main(Array.empty) // here is the missing call
Main.test
println(Main)
print("End")

要获得所需的输出:

Init
Method
Main$$anon$1$Main$@37a001ff
End%

关于Scala App 初始化顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16108683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com