假设我定义了一个在其体内声明变量的函数:
def foo = {
val x = new X()
x.bar
}
有没有办法可以做到这一点,无论我多少次调用函数,x都只创建一次?换句话说,我可以实现:
val x = new X()
def foo = {
x.bar
}
但是将x的定义保留在函数的范围内?
答案 0 :(得分:1)
你做不到。如果您的变量在块B内声明。在B之外不能看到此变量。
你可以做的是制作一个类或一个对象,使一个属性在定义之外可见。
object CoolObject {
val x = new X()
def foo = {
// [...]
x.bar
// [...]
}
}
答案 1 :(得分:0)
如果x
是真正的单身人士,那么你需要把它放到一个单独的上下文中。 Scala的方法是创建一个对象。
object xHolder {
val x = new X()
}
...
def foo = {
import xHolder._
x.bar
}
如果foo
是具有伴随对象的类的一部分,您也可以将它放在那里。