[Swift] 데이터 타입

Soomin Kim·2024년 6월 15일

Swift

목록 보기
1/12
post-thumbnail

강 타입언어 vs 약 타입언어

컴퓨터 언어는 강 타입언어 / 약 타입언어 두가지로 나뉜다.

강 타입 언어 (Strong Type Language)

  • 한번 정한 데이터 공간 이름에 같은 타입의 데이터만 저장 가능한 언어

  • 코딩 과정에서 데이터의 타입이 바뀔 일이 없기 때문에 경우를 따지고 예외처리 할 일이 줄어듬

  • 해당 데이터를 이용해 새로운 타입으로 변환해 처리하려면 새 데이터 공간 확보 필요

  • 이러한 언어들의 코드는 Type Safety하다고 표현

    ex ) C, C++, Java, C#, Objective-C, Swift

약 타입 언어 (Weak Type Language)

  • 한번 데이터 공간 이름에 담길 타입을 정했더라도, 언제든 다른 타입의 데이터로 바꿔 담을 수 있는 언어

  • 실제로는 새로운 공간에 새로운 타입에 맞는 공간을 확보하기 때문에 성능 저하 발생

  • 코드 언어의 철학에 따라서 유연한 데이터 활용 코딩 가능

    ex ) Python, Ruby, JavaScript


Swift = 강 타입 언어

Swift는 강 타입 언어로서 한번 데이터의 타입을 정하면 메모리에서 사라질 때까지 타입을 바꿀 수 없다.

Swift의 데이터 타입은 enum / struct / class 중의 하나를 기반으로 생성된다.

데이터 타입들을 묶은 Collection (배열, 딕셔너리, 세트)도 하나의 타입을 취급한다.


Swift의 기본 타입들

Bool / Int / UInt / Double / Float / Character / String

Bool : 참/거짓을 저장하는 데이터 타입

true 또는 false를 저장할 수 있다.

var someBool: Bool = true
someBool = false
// someBool = 0 // 컴파일 오류발생
// someBool = 1 // 컴파일 오류발생

Int / UInt : 정수(소수점 이하 자리가 없는 수)를 저장하는 데이터 타입

  • 부호 있는 정수(signed) - Int : 양수, 음수, 0 값을 저장
  • 부호 없는 정수(unsigned) - UInt : 정수, 양수, 0만 저장
var someInt: Int = -100
// someInt = 100.1 // 컴파일 오류발생

var someUInt: UInt = 100
// someUInt = -100 // 컴파일 오류발생
// someUInt = someInt // 컴파일 오류발생

Double / Float : 소수점이 있는 값을 저장하는 데이터 타입

  • Double : 최대 64비트의 부동소수점 수를 저장
  • Float : 최대 32비트의 부동소수점 수를 저장 (적어도 6자리까지 표현)
var someFloat: Float = 3.14
someFloat = 3

var someDouble: Double = 3.14
someDouble = 3
// someDouble = someFloat // 컴파일 오류발생

Character : 문자, 숫자, 문장 부호, 기호와 같은 하나의 문자를 저장하는 데이터 타입

  • 큰따옴표(“”)를 사용한다.
  • Swift에서 문자는 내부적으로 그래핌 클러스터(grapheme cluster)의 형태로 저장된다. (눈에 보이는 하나의 문자를 표현하기 위해 결합된 둘 이상의 유니코드 스칼라로 구성)
var someCharacter: Character ="🇰🇷"
someCharacter = "💘"
someCharacter = "가"
someCharacter = "A"
// someCharacter = "하하하" // 컴파일 오류발생
print(someCharacter)

String : 단어나 문장을 구성하는 일련의 문자들을 저장하는 데이터 타입

  • 큰따옴표(“”)를 사용한다.
  • 문자열 데이터 타입은 저장 메커니즘을 제공할 뿐만 아니라 문자열 검색, 매칭, 연결, 수정 등의 편집 기능을 가지고 있다.
  • Swift에서 문자열은 내부적으로 문자들의 집합으로 표시된다.
    (문자는 여전히 유니코드 스칼라 값)
var someString: String = "하하하 🤩"
someString = someString + "웃으면 복이와요"
print(someString)
// someString = someCharacter // 컴파일 오류발생

특수 문자 / 이스케이프 시퀀스

  • 개행, 탭 또는 문자열 내에 특정 유니코드 값을 지정하는 이스케이프 시퀀스(escape sequence)라는 특수 문자가 있다.
  • 이스케이핑(escaping) : 역슬래시 문자를 앞에 써서 구별하는 것
  • 기본적으로 역슬래시가 앞에 붙은 문자는 특수 문자로 간주되어 처리된다.
  • 만약 역슬래시 문자를 쓰고 싶다면 역슬래시 자체를 이스케이핑하면 된다.
특수문자기능
\n개행
\r캐리지 리턴
\t
\역슬래시
\”쌍따옴표(문자열 선언부 내부에서 쌍따옴표를 쓸 때 사용됨)
\’홑따옴표(문자열 선언부 내에서 홑따옴표를 쓸 때 사용됨)
\u{nn}한 바이트의 유니코드 스칼라. nn은 유니코드 문자를 표현하는 두 개의 16진수를 쓴다.
\u{nnnn}두 바이트의 유니코드 스칼라. nnnn은 유니코드 문자를 표현하는 네 개의 16진수를 쓴다.
\u{nnnnnn}네 바이트의 유니코드 스칼라. nnnnnn은 유니코드 문자를표현하는 네 개의 16진수를 쓴다.

데이터 생성과 할당

데이터 타입을 통해 우리가 이해할 수 있는 형태의 데이터로 생각하고 프로그래밍 할 수 있다.

0개의 댓글