본문 바로가기

면접질문정리

[Swift] 스위프트 언어의 String에서 subscript를 통해 문자에 접근할 수 없는 이유에 대해 설명해주세요.

# 스위프트 언어의 String에서 subscript를 통해 문자에 접근할 수 없는 이유에 대해 설명해주세요.

String은 [Int]로 접근하지 못하고String.index로 접근해야한다.

그 이유는 다음과 같다.

unicode Scalar의 가변성에 대한 코드 예시

let emojiWomanFamily = "👩‍👩‍👧‍👧"  // 두명의 엄마와 두명의 딸로 구성된 가족
print(emojiWomanFamily.unicodeScalars.count)  // 7

let emojiWomanFamily = "👩‍👩‍👧‍👧"  // 두명의 엄마와 두명의 딸로 구성된 가족
print(emojiWomanFamily.count)    // 1

Collection에 접근하는 방식에 관한 프로토콜

  • Unicode Scalar로 접근하는 특성상 직접 접근이 하닌 순차적인 접근으로 가야한다.
  • 한 Character가 Unicode Scalar를 몇개 가지고 있을지 알 수 없기 때문에 순차적으로 접근하면서 체크해야 하기 때문이다.
  • 또한 String은 BidirectionalCollection을 따르고 있기 때문에 직접 접근이 제한된다.

# Unicode Scalar란?

Swift의 문자열 타입은 Unicode Scalar 값에서 만들어진다. 여기서 말하는 Unicode Scalar란

# 스위프트 언어는 왜 Character가 unicode scalar로 이뤄지도록 하였나요?