Scala对象的字段在每次使用时都会初始化
为什么每次使用对象的字段时都要初始化该字段?我的期望是Scala对象的实例,在我的示例中是P的实例,创建一次,因为它属于Scala对象。运行下面的代码看起来不是这样。每次调用P上的方法时,都会创建P的实例。 我找不到这种行为的任何解释。有人能帮忙吗?谢谢Scala对象的字段在每次使用时都会初始化,scala,initialization,Scala,Initialization,为什么每次使用对象的字段时都要初始化该字段?我的期望是Scala对象的实例,在我的示例中是P的实例,创建一次,因为它属于Scala对象。运行下面的代码看起来不是这样。每次调用P上的方法时,都会创建P的实例。 我找不到这种行为的任何解释。有人能帮忙吗?谢谢 object LoadingTest { println("create Object") def p = new P() def main(args: Array[String]) { p.printIt()
object LoadingTest {
println("create Object")
def p = new P()
def main(args: Array[String]) {
p.printIt()
p.printIt()
}
}
class P(){
println("create P")
def printIt()={
println("print it")
}
}
输出:
create Object
create P
print it
create P
print it
这是因为您有
defp=newp()
。通过使用def
定义此方法,您正在定义一个方法。因此,每次引用p
,它都会调用该方法,从而实例化一个新的p
您需要
val p=new p()
,这将确保对象只实例化一次,存储为val
,并在每次引用时重复使用。感谢您的快速响应。我刚刚开始使用Scala,在Java开发人员眼中,像def p=new p()这样短的东西看起来根本不像一个方法。