Swift String 조작은 왜 그 모양인가
Warning
Over a year old. May be outdated
Swift에서 String 다루는 건 생각보다 훨씬 복잡하다. 다들 비슷한 데서 불만이 터진다.
- String, Substring, Character 타입이 다 따로 있다.
- Integer로 String을 돌 수가 없다.
String.Index라는 타입을 또 써야 한다.
그래서 Python에서는 이렇게 간단한 회문 검사가
Swift에서는 이렇게 된다.
이 장황함이 보이는가?
근데 Swift String이 이렇게 생긴 데는 이유가 있다.
-
Substring. Swift String은 변수에 넣거나 함수에 넘길 때마다 복사된다. 안전하긴 한데, 문자열이 크면 효율이 떨어진다. Substring은 새 인스턴스를 만들지 않아서 훨씬 싸다.
-
String.Index, Character. Swift String은 유니코드를 제대로 다룬다. 이모지 하나가 사실 3~4글자짜리로 합쳐진 걸 본 적 있는가? é, 김, 🇮🇳 같은 Extended grapheme cluster가 들어간 단어가 그렇다. Integer로 세면 글자마다 길이가 제각각인데, String.Index와 Character로 세면 전부 길이 1이다. Apple 예시를 보자.
결국 모든 건 트레이드오프인 것 같다.
평범한 것과 비범한 것은 딱 한 걸음 차이이다.
- 지미 존슨 (1943--)
Backlinks2
23021530-Day Tweet Test (Harry Stebbings)