Swift - String(1)

조이·2022년 1월 13일
0

Swift-String

목록 보기
1/2
post-thumbnail

Declaration

@frozen struct String

(@frozen은 구조체, 열거형 타입에 사용할 수 있는 attribute로서 해당 타입에 대한 변화를 제한하는 것이다.)

Overview

애플에선 String을 Character의 collection이라고 표현한다. (여기서 collection은 array, set, dictionary를 의미하는게 아니라 말 그대로 모아 두었던 그룹, 대상을 의미한다)

String은 correctlocale에 큰 영향을 받지 않는(insensitive) Unicode로서 Object-C의 NSString타입과 호환(bridges with)될 수 있으며 C 함수와 동작가능한 방법을 제공한다. (String문서의 하단부에 Converting a C String 에서 확인할 수 있다.)


잠깐!

여기서 correct와 locale에 insensitive하다는 것은 무엇일까?

Unicode-correct : Swift의 strings 은 Unicode standard, 즉 유니코드 표준을 따르며(conform) 이는 곧 Swift의 문자가(strings) 프로그래머가 예상한대로 동작할 것임을 의미한다.

하지만 대소문자, 순서정렬(sotring)에 관해 Unicode는 미리 많은 규칙을 정해두었다. 이 규칙들은 대부분의 경우 context( locale, string이 사용 혹은 게시되는 언어나 지역)에 따라 달라진다.

  • Swift의 string이 locale-insensitive하다는 것은 Swift는 이런 locale-specific한 규칙들을 제공하지 않는다는 것이다.
  • 따라서 context 에 따라 strings이 변경되어야 한다면(혹은 적절히 반응해야 한다면) String타입에 extension을 이용해 method를 구현하거나 localizedUppercase, localizedLowercase등을 사용해야한다.

스위프트에서 String타입의 변수(상수)를 생성하기 위해선 쌍따옴표(")를 이용하면된다.
첫 번째는 쌍따옴표 사이 원하는 글자를 입력하거나,string interpolation = \() 을 사용할 수 있다.

let greeting = "Welcome!"

let name = "Rosa"
let personalizedGreeting = "Welcome, \(name)!"
// personalizedGreeting == "Welcome, Rosa!"

let price = 2
let number = 3
let cookiePrice = "\(number) cookies: $\(price * number)."
// cookiePrice == "3 cookies: $6."

+ 연산자를 이용해 문자열끼리 합치는 것도 가능하다.

let longerGreeting = greeting + " We're glad you're here!"
// longerGreeting == "Welcome! We're glad you're here!"

여러 줄 인경우 double quotation marks(""")를 이용한다. 들여쓰기(indentation)는 닫는 부분의 mark를 기준으로 정해진다.

let banner = """
          __,
         (           o  /) _/_
          `.  , , , ,  //  /
        (___)(_(_/_(_ //_ (__
                     /)
                    (/
        """ 
        
 //출력문![]
 /*
   __,
 (           o  /) _/_
  `.  , , , ,  //  /
(___)(_(_/_(_ //_ (__
             /)
            (/
 */

마치며

여기까지 String은 어떻게 구현되어있고 어떻게 선언하는지에 관한 것이었다. 다음 글에선 변경(Modifying)되고 비교(Comparing)하고 있는지 알아보자.

0개의 댓글