Swift

String은 왜 subscript로 접근이 안되는지 설명하시오.

iosun 2023. 3. 20. 22:09

처음 swift로 알고리즘 문제를 풀 때 이런 에러를 몇 번 본 적 있다.

어라..파이썬은 이런 에러 안떴는데..

 

Int를 이용해서 String의 subscript를 사용할 수 없고 대신 String.Index를 사용하라고 한다.

 

왜지..?

 

애플문서에 따르면 String은 유니코드 문자열 값 이라고 한다.

유니코드는 가변 길이 문자 인코딩으로 눈에 보이는 문자열이 하나더라도 실제 길이는 다르다.

따라서 Int로는 subscript를 사용할 수 없는 것이다.

 

만약에 String의 subscript를 사용하고 싶다면 

 

let str = "hello sun"
let index = str.index(str.startIndex, offsetBy: 2)
print(str[index])

String.Index로 subscript를 사용해주면 된다.

 

 

+ 추가로 알고리즘 문제를 풀 때는 문자열을 배열로 형변환을 해 사용하는게 편하다.

let str = "hello sun"
let arr = Array(str)
print(arr[3])