- 데이터 타입(Data Type)과 콜렉션 타입(Collection Type)
- Swift는 저장할 데이터의 종류에 따라 데이터의 타입을 구분하여 저장합니다.
- 대표적으로 숫자에는
Int
,Double
, 문자에는String
, 논리자료에는Bool
등의 타입을 사용합니다.- 단일 데이터뿐만 아니라 여러개의 값들을 묶어서 저장할 수 있는 콜렉션 타입(Collection Type)을 제공합니다.
- 옵셔널(Optional)과 nil
- Swift는 '값이 없는' 상태를
nil
이라고 하며, 각 데이터 타입에 대해 값이 없을 수 있는 상태를 처리하기 위해 옵셔널(Optional) 타입을 별도로 가지고 있습니다.
- Type Safety
- Swift는 개발자에게 저장하는 데이터의 타입(Type)을 명확히하도록 요구하며, 이로 인해 발생할 수 있는 에러를 빠르게 찾고 수정할 수 있도록 만들어주는 특징을 가지고 있습니다.
Swift는 일반적인 종류의 데이터로 동작하고 기본 구문을 작성합니다.
표기 | 타입 | 자료형태 |
---|---|---|
Int | 정수 타입 | 64비트 정수형 |
Float | 실수 타입 | 32비트 부동소수형 |
Double | 실수 타입 | 64비트 부동소수형 |
Character | 문자 타입 | 단일 유니코드 자료형 |
String | 문자열 타입 | 복수 유니코드 자료형 |
Bool | 논리 자료 타입 | true 와 false 만을 값으로 가짐 |
Swift는 다른 언어들과 마찬가지로 여러 기본적인 데이터 타입을 제공합니다. 이번 포스팅에서는 당장 사용할 타입들에 대해서 간단히 알아보고, 공식문서 번역본에 게재된 순서대로 각 데이터타입들에 대해서도 업로드 할 예정입니다.
// swift가 정수와 부동소수점을 다루기 위해 제공하는 Int, Double
let num1: Int = 10
let num2: Double = 3.14
// 참, 거짓을 다루기 위한 데이터 타입 Bool
let a: Bool = true
let b: Bool = false
// 문자열을 다루는 데이터 타입 String
let greeting = "안녕하세요."
Swift는 또한 Array
, Set
, Dictionary
총 3가지의 기본적인 콜렉션타입을 제공합니다.
// Int타입의 값들을 가진 배열(Array) someInts
let someInts: [Int] = [1, 2, 3, 4, 5]
// String타입의 값들을 가진 집합(Set)
let favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
// key와 value를 동시에 가지는 딕셔너리(Dictionary)
let airports: [String : String] = ["YYZ": "Toronro Pearson", "DUB": "Dublin"]
Swift는 변수를 식별 가능한 이름으로 값을 저장하고 참조합니다. Swift는 또한 값을 변경할 수 없는 변수를 광범위하게 사용합니다. 이러한 변수를 상수(Constants, let
)라고 하며, 값을 변경할 필요가 없을 때 코드를 더 안전하고 명확하게 만들기 위해 Swift에서 사용됩니다.
위의 익숙한 타입들 외에도 Swift는 튜플(Tuple)이라는 고급 타입을 지원합니다. 튜플은 값을 그룹화하여 생성하거나 전달할 수 있습니다. 튜플을 사용하여 함수의 여러값을 단일 복합 값으로 반환할 수 있습니다.
Swift는 또한 값이 존재하지 않는 상태를 처리하기 위해 옵셔널(Optional)타입을 가집니다. 옵셔널은 "값을 가지며, 그 값은 x와 같다" 또는 "값을 가지지 않는다"를 구분하여 명시합니다.
let String1: String? = "Hello, " // String1은 값을 가지고 있으며, 그 값은 "Hello, "이다.
let String2: Optional<String> = "World!" // String2는 값을 가지고 있으며, 그 값은 "World!"이다.
Swift는 타입에 엄격한 언어입니다(=Type Safety). 타입 세이프란 언어가 값에 대해 타입을 명확히하도록 도와주고 코드에서 동작하도록 합니다. 타입 세이프티는 만약 String
을 요구하는 코드에서 실수로 Int
로 전달하는 것을 막아줍니다. 마찬가지로 옵셔널이 아닌 String
을 요구하는 코드에 옵셔널String
을 전달하는 것을 막아줍니다. 타입세이프티는 개발 단계에서 가능한 빠르게 에러를 찾고 고칠 수 있도록 도와줍니다.