Swift의 String 타입은 값 타입 (value type)이다.
새로운 String 값을 생성한다면 String 값은 함수 또는 메서드에 전달될 때나 상수 또는 변수에 대입될 때 복사된다.
각 경우에 존재하는 String 값의 새로운 복사본이 생성되고 원본이 아닌 새로운 복사본은 전달되거나 할당된다.
Swift의 String복사 동작은 함수 또는 메서드가 String 값을 전달할 때 출처에 관계없이 String 값이 정확하다고 보장한다.
전달된 문자열은 직접 수정하지 않는 한 수정되지 않는다.
Swift의 컴파일러는 꼭 필요할 때 실제 복사가 이뤄지도록 문자열 사용을 최적화한다.
이것은 문자열을 값 유형으로 사용할 때 항상 뛰어난 성능을 얻을 수 있다는 의미이다.