programing

Swift에서 배열 [String] 슬라이싱 반환 유형이 [String]이 아닌 것 같습니다.

minimums 2023. 8. 16. 22:06
반응형

Swift에서 배열 [String] 슬라이싱 반환 유형이 [String]이 아닌 것 같습니다.

저는 일련의 줄을 자르고 그것을 다음으로 설정하고 있습니다.[String]변수입니다. 그러나 형식 검사기에서 불만이 있습니다.컴파일러 버그일 가능성이 있습니까?

var tags = ["this", "is", "cool"]
tags[1..<3]
var someTags: [String] = tags[1..<3]

screenshot

범위를 사용하여 배열을 구독하면 배열이 반환되지 않고 조각이 반환됩니다.그러나 해당 조각으로 배열을 만들 수 있습니다.

var tags = ["this", "is", "cool"]
tags[1..<3]
var someTags: Slice<String> = tags[1..<3]
var someTagsArray: [String] = Array(someTags)
var tags = ["this", "is", "cool"]
var someTags: [String] = Array(tags[1..<3])
println("someTags: \(someTags)") // "someTags: [is, cool]"

이 작업을 통해 슬라이스의 새 배열을 가져올 수도 있습니다.

var tags = ["this", "is", "cool"]
var someTags = [String]()
someTags += tags[1..<3]
println(someTags[0])  //prints ["is", "cool"]

이를 위한 또 다른 방법은 변수 선언 결합입니다.let someTags: [String]그리고, 그것은 변화할 것입니다.ArraySlice<String>로.[String]:

let tags = ["this", "is", "cool"]
let someTags: [String] = tags[1..<3].map { $0 } // ["is", "cool"]

변환을 위한 또 다른 편리한 방법ArraySlice로.Array다음과 같습니다.

var tags = ["this", "is", "cool"] var someTags: [String] = tags[1..<3] + []

나중에 이것을 보는 다른 개발자(또는 자신)가 그것의 목적을 이해하지 못할 수도 있기 때문에 완벽하지 않습니다.좋은 소식은 만약 그 개발자(아마도 당신)가 그것을 제거한다면.+ []그들은 즉시 컴파일러 오류에 직면할 것이고, 그것은 바라건대 그것의 목적을 명확하게 할 것입니다.

조각을 만들 때 배열로 캐스팅하기만 하면 됩니다.중간 변수를 사용하지 않고 배열을 배열로 유지합니다.이것은 코드화 가능한 유형을 사용할 때 유용합니다.

var tags = ["this", "is", "cool"]
tags = Array(tags[1..<3])

언급URL : https://stackoverflow.com/questions/25714673/in-swift-array-string-slicing-return-type-doesnt-seem-to-be-string

반응형