Ungkapan Lambda dan Kesalahan Pembolehubah Lelaran
Menggunakan pembolehubah lelaran dalam ungkapan lambda selalunya membawa kepada amaran pengkompil dan tingkah laku yang tidak dijangka. Artikel ini menerangkan sebab amalan ini harus dielakkan.
Pertimbangkan senario ini: gelung berulang melalui senarai tindakan, setiap satu ditakrifkan sebagai ungkapan lambda yang menggunakan pembolehubah pembilang gelung. Anda mungkin mengharapkan setiap lambda menggunakan nilai yang berbeza daripada lelaran; bagaimanapun, ini tidak berlaku. Semua lambda akan menggunakan nilai akhir pembolehubah lelaran.
Ini kerana ungkapan lambda menangkap rujukan kepada pembolehubah lelaran, bukan salinan nilainya pada masa penciptaan lambda. Apabila gelung berlangsung, nilai pembolehubah lelaran berubah dan semua lambda akhirnya merujuk nilai akhir yang dikemas kini ini.
Risiko Negara Kongsi
Tingkah laku ini boleh menyebabkan masalah yang serius:
Amalan Disyorkan: Tangkapan Pembolehubah Setempat
Untuk mengelakkan isu ini, cipta pembolehubah setempat di dalam gelung dan tetapkan nilai pembolehubah lelaran kepadanya. Lambda kemudiannya harus menangkap pembolehubah tempatan baharu ini. Ini memastikan setiap lambda mempunyai salinan bebas nilainya sendiri, menghalang tingkah laku yang tidak dijangka.
Dengan mengikuti amalan terbaik ini, anda akan menulis kod yang lebih bersih, lebih dipercayai dan lebih mudah diselenggara apabila menggunakan ungkapan lambda.
Atas ialah kandungan terperinci Mengapa Saya Harus Mengelak Menggunakan Pembolehubah Lelaran Di Dalam Ungkapan Lambda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!