Accès aux variables dans la portée confinée
Accès aux variables locales
Restriction de modification
Impossible de modifier :
Modification des variables d'instance
Une expression lambda peut :
Exemple : Capture d'une variable locale à partir d'une portée externe
Code :
interface MyFunc { int func(int n); } class VarCapture { public static void main(String args[]) { // Variável local que pode ser capturada int num = 10; MyFunc myLambda = (n) -> { // Uso correto da variável num int v = num + n; // A instrução abaixo é inválida porque tenta modificar num // num++; return v; }; // Usando a expressão lambda System.out.println(myLambda.func(8)); // Exibe: 18 // Modificar num aqui também causaria erro // num = 9; } }
Explication :
Capture numérique :
num est effectivement final car il n'est pas modifié après l'affectation initiale.
Lambda peut accéder au numéro, mais ne peut pas le modifier.
Exécution :
myLambda.func(8) renvoie 18 car :
num (10) est ajouté au paramètre n (8), produisant 18.
Erreur due à une modification :
Décommenter num ou num = 9 invaliderait la capture, provoquant une erreur de compilation.
Remarque :
Important : les variables d'instance ou statiques peuvent être utilisées et modifiées sans restrictions dans les expressions lambda.
Les restrictions s'appliquent uniquement aux variables locales de portée externe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!