je tentais de mettre en œuvre l'exemple de fermeture à Scala, de la présentation de la pensée fonctionnelle de Neal Ford qui est en Groovy. Reportez-vous glisser # 43bloc de code à Scala
def makeCounter : Unit = {
var localVar = 0
return { localVar += 1 }
}
Ce code renvoie une fonction anonyme. Maintenant, je veux incrémenter le localVar en invoquant cette fonction anonyme. J'ai deux questions:
1. Comment appeler la fonction anonyme?
2. Après l'avoir invoqué, comment vérifier si la valeur de localVar est incrémentée ou non?
D'abord j'ai essayé ceci -
val c1 = makeCounter(). Il a jeté l'erreur ci-dessous:
erreur: makeCounter de type L'unité ne prend pas de paramètres
Puis j'ai essayé ceci.
val = c1 makeCounter
Cela n'a pas donné aucune erreur. Seulement imprimé c1: Unit =(). Ensuite,
print (c1) a imprimé(), alors que c1() a donné la même erreur.
"Ce code renvoie une fonction anonyme." - Alors pourquoi as-tu déclaré son type de retour comme 'Unit'? –
Je pense qu'il mélange les paramètres unitaires par nom avec l'unité pure. – pedrofurla