Akses kepada Pembolehubah dalam Skop Terkandung
- Ungkapan lambda boleh mengakses:
- Pembolehubah tika bagi kelas yang mengandungi.
- Pembolehubah statik ditakrifkan dalam kelas luaran.
- Parameter ini, yang merujuk contoh panggilan kelas luaran.
Akses kepada Pembolehubah Setempat
- Apabila menggunakan pembolehubah tempatan skop luaran:
- Pembolehubah setempat mestilah muktamad dengan berkesan.
- Secara muktamad dengan berkesan: Pembolehubah yang nilainya tidak berubah selepas ditugaskan.
- Tidak perlu diisytiharkan secara jelas sebagai muktamad.
- Mengubah suai pembolehubah setempat (di dalam atau di luar lambda) membatalkan tangkapannya.
Sekatan Pengubahsuaian
Tidak boleh mengubah suai:
- Pembolehubah setempat yang ditangkap dalam ungkapan lambda.
- Mengubah suai pembolehubah ini mengalih keluar status muktamadnya dengan berkesan.
Pengubahsuaian Pembolehubah Contoh
Ungkapan lambda boleh:
- Gunakan dan ubah suai pembolehubah contoh kelas panggilan.
- Tiada sekatan pada status "akhir" contohnya pembolehubah.
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

Dreamweaver Mac版
Alat pembangunan web visual