chiusura Scala
La chiusura è una funzione che restituisce un valore dipendente dalla dichiarazione esterna in una funzione o più variabili.
Chiusure generalmente considerati semplicemente un'altra funzione all'interno di una funzione in grado di accedere alle variabili locali.
Questa funzione anonima come la seguente:
val multiplier = (i:Int) => i * 10
corpo Function ha una variabile i, come parametro di funzione. Un altro pezzo di codice come il seguente:
val multiplier = (i:Int) => i * factor
Ci sono due variabili del moltiplicatore: i e fattore. Dove i è un parametro formale della funzione, la funzione viene chiamata quando il moltiplicatore, mi hanno dato un nuovo valore. Tuttavia, il fattore non è i parametri formali, ma le variabili libere, considerare i seguenti codici:
var factor = 3 val multiplier = (i:Int) => i * factor
Qui introduciamo un fattore variabile libera, questa variabile viene definita al di fuori della funzione.
variabili di funzione moltiplicatore così definiti come "chiusura", perché si riferisce a una variabile esterna alla definizione di funzione, la definizione del processo di questa funzione è catturare le variabili libere costituiscono una funzione chiusa.
esempio completo
object Test { def main(args: Array[String]) { println( "muliplier(1) value = " + multiplier(1) ) println( "muliplier(2) value = " + multiplier(2) ) } var factor = 3 val multiplier = (i:Int) => i * factor }
L'attuazione del codice di cui sopra, l'output è:
$ scalac Test.scala $ scala Test muliplier(1) value = 3 muliplier(2) value = 6