Berurusan dengan Panjang dan Kapasiti Slice
Apabila bekerja dengan kepingan, adalah penting untuk memahami kesan operasi penghirisan pada kedua-dua panjang dan kapasiti daripada kepingan itu. Timbul persoalan mengapa kapasiti berkurangan apabila menghiris dengan s[2:], tetapi kekal tidak terjejas apabila menggunakan s[:4] atau s[:0].
Kunci kepada perbezaan ini terletak di mana parameter penghirisan, titik bertindih dan nilai angka (2), diletakkan. Apabila nombor diletakkan sebelum titik bertindih, seperti dalam s[2:], operasi secara berkesan menjatuhkan dua elemen pertama hirisan. Ini mengakibatkan bukan sahaja mengurangkan panjang hirisan tetapi juga mengubah penunjuk kepada elemen pertamanya. Memandangkan kapasiti hirisan ditentukan oleh saiz tatasusunan yang mendasari, menukar penuding turut mempengaruhi kapasiti.
Sebaliknya, apabila nombor diletakkan selepas titik bertindih, seperti dalam s[:4] atau s[:0], operasi penghirisan melaraskan panjang kepingan dalam tatasusunan sedia ada tanpa mengubah suai penunjuk. Ini bermakna kapasiti hirisan kekal tidak berubah.
Satu lagi perkara yang perlu diperhatikan ialah tidak mungkin untuk memulihkan dua elemen pertama yang digugurkan menggunakan s[2:] apabila menetapkan semula kepingan yang dihiris kepada pembolehubah yang sama . Ini kerana operasi penghirisan tidak menduplikasi data asas tetapi sebaliknya mencipta kepingan baharu yang merujuk tatasusunan asal. Mengubah suai kepingan yang dihiris mengubah suai kepingan asal, menjadikannya mustahil untuk mendapatkan semula elemen yang hilang tanpa operasi tambahan.
Untuk menggambarkan konsep ini, pertimbangkan perwakilan hirisan berikut dalam ingatan:
[]byte{a, b, c, d, e}
Jika kita melaksanakan s = s[2:4], hirisan dikurangkan kepada:
[]byte{c, d}
Kapasiti asal slice berkurangan kerana penunjuk kini merujuk kepada bahagian lain tatasusunan.
Atas ialah kandungan terperinci Mengapa Menghiris Sekeping Masuk Menjejaskan Kapasiti Berbeza Bergantung pada Peletakan Usus Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!