본문 바로가기
iOS/iOS

String은 왜 subscript로 접근이 안되는가?

by 황민우 2022. 3. 30.

이유와 답

- 먼저 Swift에서 Character는 한 개 이상의 Unicode Scalar로 이루어져 있으며, 크기가 가변적입니다.

- SwiftStringStruct타입이고, Characterscollection입니다. 즉 Array <Element>의 elementCharacter인 배열입니다.

- 그렇기 때문에 Swift에서 Stringstr[n]과 같은 방식으로 Subscript로 접근할 수 없으며, String.index로 접근해야만 사용할 수 있습니다.

 

subscript에 관한 글

2022.02.15 - [iOS/Swift 문법 심화 학습] - 서브스크립트 [ Subscript ]

 

서브스크립트 [ Subscript ]

정의 - 컬렉션, 리스트, 시퀀스, 등,, 집합의 특정 멤버 엘리먼트에 간단하게 접근할 수 있는 문법입니다. - 클래스, 구조체, 열거형에서 스크립트를 정의해 사용할 수 있습니다. - 서브스크립트를

seagreen83.tistory.com


실습 예제

- 문자열의 타입, utf8, utf16, unicodeScalars 출력

let testString = "🙄😉😝😓"

print("------> testString")

testString.forEach { char in
    print(type(of: char))
}

print("------> testString.utf8")

testString.utf8.forEach { 
    print(type(of: $0), $0)
}

print("------> testString.utf16")

testString.utf16.forEach { 
    print(type(of: $0), $0)
}

print("------> testString.unicodeScalars")

testString.unicodeScalars.forEach { 
    print(type(of: $0), $0)
}

실행 결과


실습 예제 2

- string.index 사용

let testString2 = "🦾🐧🐣567"
let index = testString2.index(testString2.startIndex, offsetBy: 4)

print(index)
print(testString2[index])

실행 결과

-

 

다른 index number 출력

let testString2 = "🦾🐧🐣567"
let index = testString2.index(testString2.startIndex, offsetBy: 0)

print(index)
print(testString2[index])

실행 결과


내용 출처

https://velog.io/@hansangjin96/Swift-String%EC%9D%80-%EC%99%9C-subscriptInt%EB%A1%9C-%EC%A0%91%EA%B7%BC%EC%9D%B4-%EC%95%88%EB%90%A0%EA%B9%8C

 

Swift) String은 왜 subscript[Int]로 접근이 안될까?

swift String unicode subscript

velog.io

 

'iOS > iOS' 카테고리의 다른 글

OOP, FP  (0) 2022.04.05
멀티 스레드(Multi Thread) 구현 시, 고려할 수 있는 방식  (0) 2022.04.01
Main Thread  (0) 2022.03.29
URLSession (이론)  (0) 2022.03.28
Foundation Kit  (0) 2022.03.25

댓글