본문 바로가기

Apple/Swift

[Swift] 데이터 타입_문자형

 

해당 포스팅은 The Swift Programming Language (5.9.2) 버전으로 작성되었습니다.

 

 

 

 

안녕하세요! 마루입니다. 😬

 

새해 복 많이 받으셨나요!! 🧧

 

 

 

 

오늘의 주제는

데이터 타입_문자형

입니다!!!!

 

 

저번 포스팅에서는 데이터 타입의 숫자형을 알아봤었죠!

드디어 문자형에 대해 알아볼 차례입니다.

 

말 그대로 문자들에 대한 데이터를 다룰 때 사용하는

데이터 타입입니다.

 

사실 벌써 알고 계신 분들이 많으실 겁니다!

다들 이런 코드를 많이 보셨을 거예요.

print("Hello, World!")

 

모든 프로그래밍 언어의 시작은 Hello, World!를 출력하는 것부터 시작을 하죠!

저 코드에서 작성한 "Hello, World!" 가 바로 문자열(String)의 리터럴 값입니다.

 

 

근데 문자형 데이터 타입의 리터럴들은 꼭 큰 따옴표("")로 감싸야 하나요??

 

네! 그렇습니다!!!

일반적인 코드 구문과 문자형 데이터 리터럴을 구분하기 위해

문자형 데이터 리터럴은 꼭! 큰 따옴표로 감싸야합니다.

(작은따옴표도 안돼요오~~~)

 

 

Swift언어에서의 문자형 데이터 타입에는 2가지가 있습니다.

문자(Character)

문자열(String)

 

그럼 조금 더 자세히 알아볼까요!

 

 

1️⃣ 문자(Character)

 

문자는 하나의 문자를 저장하는 데 사용하는 데이터 타입니다.

 

하나의 문자만 저장한다구요?? 두 개는 안되나요???

ㅎㅎ 당연히 안됩니다.

 

하나의 문자만 저장할 수 있는 데이터를 사용하는 경우가 많을까요?

심지어 Swift의 타입 추론을 이용해 다음과 같이 단일 문자 리터럴을 작성해도

Character가 아닌 String으로 타입을 추론합니다.

 

 

그럼 왜 Character 타입을 사용하는 걸까요?

 

저도 포스팅을 하다가 문뜩 궁금해져서 ChatGPT 한테 물어봤습니다 ㅎㅎ

 

여러 가지 이유가 있지만 특히 메모리 효율성에 대해서 답변을 해줍니다.

분명 단일 문자만 사용하는 경우가 있을 겁니다.(예를 들어, 성적을 나타낼 때; A, B, C)

예전에는 컴퓨터의 메모리가 매우 작아서,

메모리를 굉장히 아껴가며 써야 했던 시절이 있었습니다.

이런 시기에는 분명 단일 문자 타입(Charater)을 사용하는 것이

문자열 타입(String)을 사용하는 것보다 메모리를 적게 사용할 수 있었을 겁니다!

 

그리고 단일 문자를 꼭 사용해야 하는 경우에

실수로 문자열이 사용되는 것을 방지할 수도 있겠죠!

 

 

어쨌든!

여러분들은 단일 문자를 사용해야 하는 특수한 경우가 아니라면!

그냥 문자열인 String 타입을 사용하시면 됩니다!

(우리는 예전보다 메모리가 넉넉한 세상에서 살고 있으니까요🙃)

 

 

2️⃣ 문자열(String)

 

위에서도 많이 언급됐지만 문자열은 문자(Character)들의 집합을 말합니다.

let someString: String = "Some string literal value"

 

위의 예시 코드처럼 큰 따옴표(")로 감싸고, 쓰고 싶은 문자열을 작성하면

그것이 String 리터럴이 됩니다!

 

문자열 타입에 대해서는 크게 어려운 것이 없으나,

몇몇 특수한 상황에 대한 대처가 필요하답니다!

 

 

Q. 저는 여러 줄의 문장을 코드에서 작성하고 싶어요!!!

A. 3개의 따옴표(""")로 감싸면 됩니다.

let 애국가 = """
동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세

무궁화 삼천리 화려 강산
대한사람 대한으로 길이 보전하세
"""

단!!! 예제 코드와 같이

3개의 따옴표 다음 줄에 여러 줄의 문자열을 작성해야 하고,

작성 완료 후에는 다음 줄에 3개의 따옴표로 마무리해야 합니다.

다음 줄로 띄우지 않으면 컴파일 에러가 발생합니다!

 

 

Q. 들여 쓰기를 하고 싶어요!!!

A. 마지막 감싸는 3개의 따옴표를 기준으로 그것보다 들여쓰기 되어있으면 됩니다.

 

 

Q. 문자열 안에서 큰 따옴표를 쓰고 싶어요!!!

A. *역슬래쉬(\)를 사용하면 여러 가지 기능이 가능합니다.

*역슬래쉬 입력은 보통 키보드에서 엔터 키 위에 있는 키입니다.

 

마루가 "안녕하세요" 하고 고개를 숙이며 인사를 한다.

를 문자열 리터럴로 입력할 수 있을까요?

 

잘 안되는군요...🥲

위에서 말한 대로 역슬래쉬(\)를 이용해 봅시다 ㅎ.ㅎ

역슬래쉬를 이용하니 문제없이 문자열 안에서도 큰 따옴표를 작성할 수 있는 것을 확인했습니다!

 

이처럼 역슬래쉬가 앞에 붙는 특수문자들이 있습니다.

\n 개행
\r 캐리지 리턴
\t
\\ 문자열 안에서 역슬래쉬
\" 문자열 안에서 큰 따옴표
\' 문자열 안에서 따옴표
\u{nn} 한 바이트 유니코드 스칼라
\u{nnnn} 두 바이트 유니코드 스칼라
\u{nnnnnnnn} 네 바이트 유니코드 스칼라

 

다음은 Apple 공식문서에 나온 특수문자들의 예시 코드입니다.

직접 코딩을 하면서 다른 특수문자들도 확인해 보세요! ⌨️

let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"
// "Imagination is more important than knowledge" - Einstein
let dollarSign = "\u{24}"        // $,  Unicode scalar U+0024
let blackHeart = "\u{2665}"      // ♥,  Unicode scalar U+2665
let sparklingHeart = "\u{1F496}" // 💖, Unicode scalar U+1F496

 

 

이제는 많이 익숙해졌을 상수와 변수에 대한 문자열도 볼까요?

당연하겠지만 상수 문자열은 한 번 할당하면 값이 변경될 수 없고,

변수 문자열은 값이 변할 수 있습니다!

 

 

3️⃣ 문자열 보간법(String Interpolation)

 

마지막으로 배울 개념은 문자열 보간법입니다.

문자열 보간법은 예시 코드를 통해 설명하겠습니다.

 

다음 코드와 같이 마루와 마루의 소지 금액, 과자 금액을 상수와 변수에 할당하였습니다.

 

이제 저는 다음과 같은 문장을 출력하고 싶습니다.

마루는 지금 3,000원을 가지고 있고, 1,000원짜리 과자를 1개 구매한 후 남은 금액은 2,000원이다.

 

이렇게 쓸까요!?

놉놉, 절대 안됩니다~~!!! 🚫

우리가 선언한 상수와 변수를 사용해야겠죠!? 이때 사용하는 것이 바로 문자열 보간법입니다.

문자열 안에서 상수나 변수, 혹은 계산식도 작성이 가능하답니다.

 

문자열 보간법은 문자열 안에서 역슬래쉬 후 소괄호로 감싸줍니다.

\()

 

문자열 보간법은 앞으로 매우 많이 쓰게 될 테니, 꼭 기억해 주세요!!! 🤓

 

 

 

 

= = = = = = = = = =

 

이렇게 [데이터 타입_문자형]을 마지막으로

Swift의 데이터 타입을 알아보았습니다.

 

이번 포스팅에서는 Apple의 공식문서를 많이 살펴보진 못했는데요,

공식문서를 읽어보려면 다른 개념들이 더 필요해서 많이 언급을 하지 못했습니다.

(추가적인 내용이 더 많으니 꼭 한 번 살펴보시길 바랍니다!!! 공식 문서)

 

오탈자나 설명의 틀린 부분, 추가적으로 해주고 싶으신 설명이 있으시다면

주저 없이 댓글을 달아주세요. 🙏

 

= = = = = = = = = =

 

추가적으로 앞으로 포스팅의 내용이 좀 뒤죽박죽이 될 것 같습니다.

원래 계획은 Apple의 공식문서를 순서대로 포스팅을 해보려 했으나,

저도 아직 여러 가지 공부할 것이 매우 많은 코린이라서...🥲

 

앞으로는 제가 공부했던 부분을 중심으로 포스팅을 해보려고 합니다!

나중에 제가 멋진 개발자로 거듭나게 되면

또 차근차근 Swift의 기초 개념을 포스팅하도록 하겠습니다!

 

긴 글 읽어주셔서 감사합니다.

'Apple > Swift' 카테고리의 다른 글

[Swift] 제너릭(Generic)  (1) 2024.03.02
[Swift] 데이터 타입_숫자형  (0) 2024.02.03
[Swift] 타입 명시와 타입 추론  (0) 2024.01.21
[Swift] 상수와 변수  (2) 2024.01.07
[Swift] 마루의 공부 방법  (0) 2024.01.06