Array memiliki semantik nilai penuh di Swift, jadi tidak perlu sesuatu yang mewah.
var duplicateArray = originalArray
adalah semua yang Anda butuhkan.
Jika konten array Anda adalah tipe referensi, maka ya, ini hanya akan menyalin pointer ke objek Anda. Untuk melakukan salinan mendalam dari konten, Anda akan menggunakan map
dan melakukan salinan dari setiap contoh. Untuk kelas Foundation yang sesuai dengan NSCopying
protokol, Anda dapat menggunakan copy()
metode ini:
let x = [NSMutableArray(), NSMutableArray(), NSMutableArray()]
let y = x
let z = x.map { $0.copy() }
x[0] === y[0] // true
x[0] === z[0] // false
Perhatikan bahwa ada masalah di sini yang semantik nilai Swift bekerja untuk melindungi Anda dari — misalnya, karena NSArray
mewakili larik yang tidak dapat diubah, copy
metodenya hanya mengembalikan referensi ke dirinya sendiri, sehingga pengujian di atas akan menghasilkan hasil yang tidak terduga.
var duplicateArray = originalArray