반응형
Swift에서 Array [String] 슬라이싱 반환 유형이 [String]이 아닌 것 같습니다.
문자열 배열을 자르고 [String]
변수로 설정하고 있지만 유형 검사기가 불평하고 있습니다. 가능한 컴파일러 버그입니까?
var tags = ["this", "is", "cool"]
tags[1..<3]
var someTags: [String] = tags[1..<3]
범위로 배열을 첨자하면 배열이 아니라 슬라이스가 반환됩니다. 하지만 해당 슬라이스에서 배열을 만들 수 있습니다.
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]
와 map(_:)
, 그 변환됩니다 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] + []
나중에 보는 다른 개발자 (또는 자신)가 그 목적을 이해하지 못할 수 있기 때문에 완벽하지 않습니다. 좋은 소식은 해당 개발자 (아마도 여러분)가 제거 + []
하면 즉시 컴파일러 오류가 발생하여 목적을 명확히 할 수 있다는 것입니다.
반응형
'developer tip' 카테고리의 다른 글
iOS 장치 (모바일 Safari)의 입력 필드에서 프로그래밍 방식으로 텍스트 선택 (0) | 2020.09.21 |
---|---|
HTTP 상태 코드 0-오류 도메인 = NSURLErrorDomain? (0) | 2020.09.21 |
주어진 시간에 ffmpeg가있는 비디오의 스크린 샷 1 개를 추출하는 방법은 무엇입니까? (0) | 2020.09.21 |
len ()과 .__ len __ ()의 차이점은 무엇입니까? (0) | 2020.09.21 |
모든 ASCII 문자 목록을 포함하는 Python 라이브러리가 있습니까? (0) | 2020.09.21 |