在scala对象中声明val与在函数中声明val不同
此代码导致系统为空:在scala对象中声明val与在函数中声明val不同,scala,Scala,此代码导致系统为空: object Main extends App { val system = ActorSystem("mySystem") override def main(args: Array[String]): Unit = { println("Done") } } 但是,如果我将系统的声明移动到主,则它已正确初始化。为什么会这样?来自(我的重点): 警告 应该注意的是,这个特性是使用DelayedInit功能实现的,这意味着在执行main方法之前
object Main extends App {
val system = ActorSystem("mySystem")
override def main(args: Array[String]): Unit = {
println("Done")
}
}
但是,如果我将系统
的声明移动到主
,则它已正确初始化。为什么会这样?来自(我的重点):
警告
应该注意的是,这个特性是使用DelayedInit
功能实现的,这意味着在执行main方法之前,对象的字段不会被初始化
还应注意,不应覆盖main
方法:整个类主体成为“main方法”
照办
object Main extends App {
val system = ActorSystem("mySystem")
println("Done")
}
或
从(我的)重点:
警告
应该注意的是,这个特性是使用DelayedInit
功能实现的,这意味着在执行main方法之前,对象的字段不会被初始化
还应注意,不应覆盖main
方法:整个类主体成为“main方法”
照办
object Main extends App {
val system = ActorSystem("mySystem")
println("Done")
}
或
系统为空何时?你如何评价它?@GabrielePetronella如果我在
main()
中使用它,它是空的。如果我打开println
并检查它,它是空的。系统正在null
什么时候?你如何评价它?@GabrielePetronella如果我在main()
中使用它,它是空的。如果我打开打印LN,检查它,它是空的。啊,我不知道。谢谢。或者,从原始代码中删除扩展应用程序
和覆盖
。啊,我不知道。谢谢。或者,从原始代码中删除扩展应用程序
和覆盖
。