下面的对象必须使用清理调用并稍后启动。如何将调用对象返回到下一个方法,以确保所有变量集仍然可用,而无需创建新的对象实例。
class a =
{
val z ="Hello"
def remove(): com.hello.a =
{
return ? /* how to return the same object type A , so that start() definition gets the correct object**/
}
def start () : unit =
{
/**buch of tasks **/
}
}
a.remove().start()
答案 0 :(得分:1)
this
中的是对当前实例的引用(如java中所示)。
例如,
class SomeClass {
def remove(): SomeClass = {
println("remove something")
this
}
def start(): Unit = {
println("start something")
}
}
new SomeClass().remove().start()
输出
remove something
start something
.remove().start()
在这里看起来有些奇怪,您可能希望将remove
定义为私有方法,只需调用start
,它会在启动之前删除。
例如
class SomeClass {
val zero = "0"
private def remove() = {
println("remove something")
}
def start(): Unit = {
remove()
println("start something")
}
}
new SomeClass().start()
或者,您可能想要定义将调用do删除内容并为您提供实例的伴随对象,
class SomeClass {
val zero = "0"
private def remove() = {
println("remove something")
}
def start(): Unit = {
println("start something")
}
}
object SomeClass {
def apply(): SomeClass = {
val myclass = new SomeClass()
myclass.remove()
myclass
}
}
SomeClass().start()