Scala częściowe stosowanie funkcji
Scala częściowe zastosowanie funkcji jest wyrażeniem, nie zapewniają wszystkich wymaganych parametrów funkcji, tylko trzeba dostarczyć w części, lub nie dostarczenia wymaganych parametrów.
Poniższe przykłady, możemy wydrukować informacje dziennika:
import java.util.Date object Test { def main(args: Array[String]) { val date = new Date log(date, "message1" ) Thread.sleep(1000) log(date, "message2" ) Thread.sleep(1000) log(date, "message3" ) } def log(date: Date, message: String) = { println(date + "----" + message) } }
Realizacja powyższego kodu, wyjście jest:
$ scalac Test.scala $ scala Test Mon Dec 02 12:52:41 CST 2013----message1 Mon Dec 02 12:52:41 CST 2013----message2 Mon Dec 02 12:52:41 CST 2013----message3
Przykład, log () Metoda przyjmuje dwa parametry: datę i wiadomość. Zadzwoniliśmy trzy razy podczas wykonywania programu, wartości parametrów są tego samego dnia, inny komunikat.
Możemy użyć powyższej metody częściowego stosowania optymalizacji funkcji, związany parametr pierwszej randce drugi parametr do używania znaku podkreślenia (_), aby zastąpić listę argumentów brakuje, a indeks nowych funkcji wartości przypisanej do zmiennej. Przykłady wyżej wprowadza się następujące zmiany:
import java.util.Date object Test { 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) } }
Realizacja powyższego kodu, wyjście jest:
$ scalac Test.scala $ scala Test Mon Dec 02 12:53:56 CST 2013----message1 Mon Dec 02 12:53:56 CST 2013----message2 Mon Dec 02 12:53:56 CST 2013----message3