Akses kepada Pembolehubah dalam Skop Terkandung
Akses kepada Pembolehubah Setempat
Sekatan Pengubahsuaian
Tidak boleh mengubah suai:
Pengubahsuaian Pembolehubah Contoh
Ungkapan lambda boleh:
Contoh: Menangkap Pembolehubah Setempat daripada Skop Luaran
Kod:
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; } }
Penjelasan:
Tangkapan Nombor:
num adalah muktamad kerana ia tidak ditukar selepas tugasan awal.
Lambda boleh mengakses nombor, tetapi tidak boleh mengubah suainya.
Pelaksanaan:
myLambda.func(8) mengembalikan 18 kerana:
num (10) ditambah pada parameter n (8), menghasilkan 18.
Ralat disebabkan Pengubahsuaian:
Menyahkomen num atau num = 9 akan membatalkan tangkapan, menyebabkan ralat kompilasi.
Nota:
Penting: Pembolehubah tika atau statik boleh digunakan dan diubah suai tanpa sekatan dalam ungkapan lambda.
Sekatan hanya dikenakan pada pembolehubah tempatan skop luaran.
Atas ialah kandungan terperinci Ungkapan Lambda dan pembolehubah penangkapan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!