THIS IS ELLIE

스트링 본문

낑낑

스트링

Ellie Kim 2019. 10. 8. 00:09

스위프트 스트링은 character의 집합으로 이루어진 유니코드 문자 값이다.

구조체로 스트링이 선언되어있다.

String은 오브젝티브 씨의 NSString와 연결되며 문자열과 함께 동작하는 C 함수와의 상호 운용성을 제공한다.

문자열은 리터럴이나 문자열 보간을 사용해 새문자열을 만들 수 있다.

리터럴은  “” 따음표로 묶인 일련의 문자이다.

문자열 보간은 포함된 표현식을 평가하고 결과를 문자열 형식으로 변환하는 문자열 리터럴이다.

 

여러 줄 문자열 리터럴은 세 개의 큰 따옴표로 묶여 있으며 각 줄 바꿈 문자는 각각의 줄에 있다.

들여 쓰기는 닫는 구분 기호의 들여 쓰기와 일치하도록 여러 줄 문자열 리터럴의 각 줄에서 된다.

 

문자열 수정 및 비교

문자열은 사본을 수정하면 원래 문자열의 영향을 받지 않는다.

Value type이기 때문이다.

 

== 동등 연산자나 관계 연산자 > < <= 를 사용해 문자열이 같은지 비교하는 작업은 유니코드 정식 표현을 사용해 수행한다.

let cafe1 = "Cafe\u{301}"

let cafe2 = "Café"

는 print (cafe1 == cafe2) true가 출력된다.

 

성능 최적화

스위프트의 문자열에는 값 의미가 있지만 문자열 데이터를 버퍼에 저장하기 위해 copy on write전략을 사용한다.

이 버퍼는 문자열의 다른 복사본에 의해 공유될 수 있다.

문자열의 데이터는 하나 이상의 문자열 인스턴스가 동일한 버퍼를 사용하는 경우에만 복사된다.

그러므로 첫 번째 시퀀스는 O(n)의 시간과 공간을 소비할 수 있다.

문자열의 인접한 저장소가 가득 차면 새 버퍼를 할당해야 하며 데이터를 새 저장소로 이동해야 한다.

문자열 버퍼는 많은 추가 작업에 대해 평균을 계산할 때 문자열에 일정한 시간 연산을 추가하는 전략을 사용한다.

반응형

'낑낑' 카테고리의 다른 글

머신러닝 추천 생성하기  (0) 2019.11.26
난수는 어떻게 생성될까?  (0) 2019.10.11
퀵소트 개선 방법  (0) 2019.09.24
When to use delegate notification closure KVO  (0) 2019.08.17
스위프트로 하는 iOS 프로그래밍  (0) 2019.07.24