타입 별칭은 이미 존재하는 타입을 다른 이름으로 정의한다. 타입 별칭은 위의 타이틀에서 볼 수 있듯, typealias라는 키워드를 사용하여 정의할 수 있다.
typealias AudioSample = UInt16
다음과 같이 타입 별칭을 지정해주게 되면 원래 이름을 사용할 수 있는 모든 위치에서 별칭을 사용 가능하다.
var maxFound = AudioSample.min
//값은 UInt16의 최소값인 0를 가지게 된다.
//위의 AudioSample은 UInt16의 별명이므로 실제로는 UInt16.min을 호출하는 것과 같다.
스위프트는 부울이라는 기본 타입이 있다. 부울 값은 오직 참 또는 거짓만 가지므로 논리적으로 참조된다. 스위프트에서는 true, false의 두가지 상수값을 제공한다.
let isOrangeSour : Bool = true
let isCandyBitter = false
//여기서도 마찬가지로 위의 상수는 타입이 자동유추되어 컴파일링이 진행된다.
부울 값은 if 구문과 같은 조건문으로 동작할 때 특히 매우 유용하다. 조건문을 통해서 로직을 가동하게 되는데, 이를 흐름 제어(control flow)라고 부른다.
let a = 1
if let a == 1 {
print(a)
}
// 조건문은 부울 값을 바탕으로 동작한다.
튜플은 여러값을 단일 복합값으로 그룹화 한다. 튜플안의 값은 어떠한 타입도 가능하며, 서로 같은 타입일 필요도 없다.
1. 튜플은 단일 복합 값으로 그룹화 하는 새로운 타입이다.
let error = (404, "Error")
//튜플의 예시이며, (Int, String)의 형태를 가진 튜플 타입이다.
2. 모든 타입의 튜플을 만들 수 있으며, 원하는 만큼 다른 타입을 포함할 수도 있다. 결과적으론 유저가 원하는 어떠한 튜플의 형태도 가능하다.
let code = (1, 2, 3)
let code2 = (1, "Lee", 3.1023)
//위에서 보듯이, 2자리 이상의 튜플도 가능하며,
//각 튜플의 인덱스마다 원하는 타입의 값을 대입도 가능하다.
3. 튜플은 함수의 반환 값으로서 특히 유용하다. 튜플은 특히 관련된 값의 간단한 그룹에 유용하다. 이는 튜플이 복잡한 데이트 구조에는 어울리지 않음을 의미한다. 데이터의 구조가 복잡한 경우에는 튜플이 아닌 클래스나 구조체를 사용한다.