2017-05-07 2 views
0

Scala - Teilweise angewendete Funktionen. Was ist die Verwendung von Partially Applied Functions und wie es funktioniert.Scala - Teilweise angewendete Funktionen

möchte es in teilweise angewandte Funktionen konvertieren.

def log(date: Date, message: String) = { 
     println(date + "----" + message) 
    } 

Antwort

3

Wenn Sie eine Funktion aufrufen, wird gesagt, dass Sie die Funktion auf die Argumente anwenden. Wenn Sie alle erwarteten Argumente übergeben, haben Sie sie vollständig angewendet. Wenn Sie nur wenige Argumente senden, erhalten Sie eine teilweise angewendete Funktion zurück. Dies gibt Ihnen die Möglichkeit, einige Argumente zu binden und den Rest später auszufüllen.

Beispiel : Die log() -Methode verwendet zwei Parameter: Datum und Nachricht. Wir möchten die Methode mehrmals aufrufen, mit demselben Wert für das Datum, aber unterschiedlichen Werten für die Nachricht. Wir können das Rauschen bei der Übergabe des Datums an jeden Aufruf eliminieren, indem wir dieses Argument teilweise auf die log() -Methode anwenden. Um dies zu tun, binden wir zuerst einen Wert an den date-Parameter und lassen den zweiten Parameter ungebunden, indem Sie an seiner Stelle einen Unterstrich setzen. Das Ergebnis ist eine teilweise angewandte Funktion, die wir in einer Variablen gespeichert haben.

Probieren Sie das folgende Beispiel

object Demo { 
    def main(args: Array[String]) { 
     val date = new Date 
     val logWithDateBound = log(date, _ : String) 

     logWithDateBound("message1") 
     Thread.sleep(1000) 

     logWithDateBound("message2") 
     Thread.sleep(1000) 

     logWithDateBound("message3") 
    } 

    def log(date: Date, message: String) = { 
     println(date + "----" + message) 
    } 
} 
Verwandte Themen