87
Subscripting array dengan range tidak mengembalikan array, tapi slice. Anda dapat membuat array dari potongan itu.
var tags = ["this", "is", "cool"]
tags[1..<3]
var someTags: Slice<String> = tags[1..<3]
var someTagsArray: [String] = Array(someTags)
Slice
terdokumentasi? Juga pesan kesalahan salah danSlice
muncul sebagai [String] di taman bermain. Dengan demikian, tampaknya ada dua kesalahan kompiler dan dokumentasi yang hilang.var someTags = tags[1..<3] var someTagsArray: [String] = someTags
ini memberi Anda lebih bermanfaaterror: 'Slice<String>' is not convertible to '[String]'
var tags = ["this", "is", "cool"] var someTags: [String] = Array(tags[1..<3]) println("someTags: \(someTags)") // "someTags: [is, cool]"
sumber
Anda juga bisa melakukan ini untuk mendapatkan array baru dari slice:
var tags = ["this", "is", "cool"] var someTags = [String]() someTags += tags[1..<3] println(someTags[0]) //prints ["is", "cool"]
sumber
Cara lain untuk melakukannya di satu tempat adalah menggabungkan deklarasi variabel
let someTags: [String]
danmap(_:)
, itu akan berubahArraySlice<String>
menjadi[String]
:let tags = ["this", "is", "cool"] let someTags: [String] = tags[1..<3].map { $0 } // ["is", "cool"]
sumber
Cara lain yang mudah untuk mengkonversi
ArraySlice
keArray
adalah ini:var tags = ["this", "is", "cool"] var someTags: [String] = tags[1..<3] + []
Itu tidak sempurna karena pengembang lain (atau Anda sendiri) yang melihatnya nanti mungkin tidak memahami tujuannya. Kabar baiknya adalah jika pengembang itu (mungkin Anda) menghapusnya,
+ []
mereka akan segera menemui kesalahan kompiler, yang diharapkan akan menjelaskan tujuannya.sumber
Cukup cast potongan sebagai Array saat dibuat. Menjaga Array Anda sebagai array tanpa harus menggunakan variabel perantara. Ini berfungsi dengan baik saat menggunakan jenis Codable.
var tags = ["this", "is", "cool"] tags = Array(tags[1..<3])
sumber