
강 타입언어 vs 약 타입언어
컴퓨터 언어는 강 타입언어 / 약 타입언어 두가지로 나뉜다.
한번 정한 데이터 공간 이름에 같은 타입의 데이터만 저장 가능한 언어
코딩 과정에서 데이터의 타입이 바뀔 일이 없기 때문에 경우를 따지고 예외처리 할 일이 줄어듬
해당 데이터를 이용해 새로운 타입으로 변환해 처리하려면 새 데이터 공간 확보 필요
이러한 언어들의 코드는 Type Safety하다고 표현
ex ) C, C++, Java, C#, Objective-C, Swift
한번 데이터 공간 이름에 담길 타입을 정했더라도, 언제든 다른 타입의 데이터로 바꿔 담을 수 있는 언어
실제로는 새로운 공간에 새로운 타입에 맞는 공간을 확보하기 때문에 성능 저하 발생
코드 언어의 철학에 따라서 유연한 데이터 활용 코딩 가능
ex ) Python, Ruby, JavaScript
Swift = 강 타입 언어
Swift는 강 타입 언어로서 한번 데이터의 타입을 정하면 메모리에서 사라질 때까지 타입을 바꿀 수 없다.
Swift의 데이터 타입은 enum / struct / class 중의 하나를 기반으로 생성된다.
데이터 타입들을 묶은 Collection (배열, 딕셔너리, 세트)도 하나의 타입을 취급한다.

Swift의 기본 타입들
Bool / Int / UInt / Double / Float / Character / String
true 또는 false를 저장할 수 있다.
var someBool: Bool = true
someBool = false
// someBool = 0 // 컴파일 오류발생
// someBool = 1 // 컴파일 오류발생
var someInt: Int = -100
// someInt = 100.1 // 컴파일 오류발생
var someUInt: UInt = 100
// someUInt = -100 // 컴파일 오류발생
// someUInt = someInt // 컴파일 오류발생
var someFloat: Float = 3.14
someFloat = 3
var someDouble: Double = 3.14
someDouble = 3
// someDouble = someFloat // 컴파일 오류발생
var someCharacter: Character ="🇰🇷"
someCharacter = "💘"
someCharacter = "가"
someCharacter = "A"
// someCharacter = "하하하" // 컴파일 오류발생
print(someCharacter)
var someString: String = "하하하 🤩"
someString = someString + "웃으면 복이와요"
print(someString)
// someString = someCharacter // 컴파일 오류발생
| 특수문자 | 기능 |
|---|---|
| \n | 개행 |
| \r | 캐리지 리턴 |
| \t | 탭 |
| \ | 역슬래시 |
| \” | 쌍따옴표(문자열 선언부 내부에서 쌍따옴표를 쓸 때 사용됨) |
| \’ | 홑따옴표(문자열 선언부 내에서 홑따옴표를 쓸 때 사용됨) |
| \u{nn} | 한 바이트의 유니코드 스칼라. nn은 유니코드 문자를 표현하는 두 개의 16진수를 쓴다. |
| \u{nnnn} | 두 바이트의 유니코드 스칼라. nnnn은 유니코드 문자를 표현하는 네 개의 16진수를 쓴다. |
| \u{nnnnnn} | 네 바이트의 유니코드 스칼라. nnnnnn은 유니코드 문자를표현하는 네 개의 16진수를 쓴다. |
데이터 생성과 할당
데이터 타입을 통해 우리가 이해할 수 있는 형태의 데이터로 생각하고 프로그래밍 할 수 있다.
