每次使用时都会初始化 Scala 对象的字段
Fields of Scala Object are initialised on every use
为什么对象的某个字段每次使用都要初始化?我的期望是 Scala 对象的实例,在我的示例中是 P 的实例,被创建一次,因为它属于 Scala 对象。 运行 下面的代码看起来好像不是这样。每次调用 P 上的方法时都会创建 P 的实例。
我找不到对此行为的任何解释。有人可以帮忙吗?谢谢
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
因为你有def p = new P()
。通过使用 def
定义它,您定义了一个方法。因此,每次您引用 p
时,它都会调用该方法,从而实例化一个新的 P
。
您需要 val p = new P()
,这将确保对象仅实例化一次,存储为 val
,并在每次引用时重复使用。
为什么对象的某个字段每次使用都要初始化?我的期望是 Scala 对象的实例,在我的示例中是 P 的实例,被创建一次,因为它属于 Scala 对象。 运行 下面的代码看起来好像不是这样。每次调用 P 上的方法时都会创建 P 的实例。 我找不到对此行为的任何解释。有人可以帮忙吗?谢谢
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
因为你有def p = new P()
。通过使用 def
定义它,您定义了一个方法。因此,每次您引用 p
时,它都会调用该方法,从而实例化一个新的 P
。
您需要 val p = new P()
,这将确保对象仅实例化一次,存储为 val
,并在每次引用时重复使用。