2017-07-24 3 views
0

Das folgende Objekt muss mit Bereinigung und späterem Start aufgerufen werden. Wie Sie das aufrufende Objekt an die nächste Methode zurückgeben, um sicherzustellen, dass alle gesetzten Variablen noch verfügbar sind, ohne eine neue Objektinstanz zu erstellen.So geben Sie das aufrufende Objekt in scala zurück

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() 

Antwort

1

in scala this zu aktueller Instanz Referenz (wie in Java).

Beispiel

class SomeClass { 

    def remove(): SomeClass = { 
    println("remove something") 
    this 
    } 

    def start(): Unit = { 
    println("start something") 
    } 
} 

new SomeClass().remove().start() 

Ausgänge

remove something 
start something 

.remove().start() hier etwas seltsam aussieht, können Sie stattdessen wollen remove als private Methode zu definieren und einfach start nennen, die es beginnt entfernt vor.

Beispiel.

class SomeClass { 
    val zero = "0" 

    private def remove() = { 
    println("remove something") 
    } 

    def start(): Unit = { 
    remove() 
    println("start something") 
    } 
} 

new SomeClass().start() 

oder wollen Sie vielleicht Begleitobjekt definieren, welche Stoffe tun rufen zu entfernen und geben Sie die Instanz,

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() 
Verwandte Themen