Latest web development tutorials

fermeture Scala

fonction Scala fonction Scala

La fermeture est une fonction qui renvoie une valeur dépendant de la déclaration externe dans une fonction ou plusieurs variables.

Fermetures Généralement considérés comme simplement une autre fonction à l'intérieur d'une fonction peut accéder aux variables locales.

Cette fonction anonyme comme suit:

val multiplier = (i:Int) => i * 10  

Corps de fonction a une variable i, en tant que paramètre de fonction. Un autre morceau de code comme suit:

val multiplier = (i:Int) => i * factor

Il y a deux variables dans le multiplicateur: i et le facteur. Où i est un paramètre formel de la fonction, la fonction est appelée lorsque le multiplicateur, on m'a donné une nouvelle valeur. Cependant, le facteur ne sont pas les paramètres formels, mais les variables libres, considérez les codes suivants:

var factor = 3  
val multiplier = (i:Int) => i * factor  

Ici, nous introduisons un facteur variable libre, cette variable est définie en dehors de la fonction.

variables de la fonction Multiplicateur ainsi définie comme une «fermeture», car il se réfère à une variable en dehors de la définition de la fonction, la définition du processus de cette fonction est de capturer les variables libres constituent une fonction fermée.

exemple complet

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  
}  

Exécution instance »

Mise en œuvre du code ci-dessus, la sortie est:

$ scalac Test.scala  
$  scala Test  
muliplier(1) value = 3  
muliplier(2) value = 6  

fonction Scala fonction Scala