# Swift ## 개요 iOS 및 macOS에 특화된 프로그래밍 언어. ## 문법 아래 내용은 Swift가 다른 언어와 차이를 갖는 부분에 대해서 중점적으로 요약한 것이다. ### 변수와 상수 Swift는 변수를 `var`(또는 지시자를 사용하지 않음), 상수를 `let`으로 정의한다. 모든 변수/상수에는 그 값을 대입해야 하나, 컴파일 시점에 값이 할당되어 있을 필요는 없다. 또한, [[language:python|Python]]과 유사하게 타입을 명시할 필요는 없으며, 필요시 `변수/상수명: 타입` 형태로 명시한다. 명시하든 컴파일러가 묵시적으로 판단하든 정의된 타입을 임의로 변경하는 것은 불가능하며, `타입(변수/상수명)`과 같이 호출하여 반환되는 값을 사용한다[^1]. ### String 다중행 문자열을 저장할 경우, 3중 큰따옴표(`"""`)로 내용을 감싸면 된다. ### 배열/딕셔너리 Swift는 배열과 더불어 딕셔너리 타입을 제공한다. 빈 딕셔너리의 경우 `딕셔너리명: [키 타입: 값 타입] = [:]` 형태로 정의된다. 즉, 키와 값의 형태를 각각 명시하는 것이 가능하다. ### optional value Swift는 변수 타입 명시 시 뒤에 물음표를 붙여, optional value로 표현할 수 있다. 이 경우 변수에 값이 존재하지 않을 경우 `nil` 값을 갖게 된다. ## 조건문 ### optional value Swift는 `if let` 형태로 값이 존재하지 않을 수 있는 변수에 대해 optional value를 지정하여 사용할 수 있다. 즉, 다른 언어들과 다르게 Swift는 값이 null인 상황을 false로 판단하지 않으며, 따로 nil 값을 지정해 주어야 한다. 혹은, 이중 물음표를 사용해 nil인 변수를 대체하는 값을 지정할 수도 있다. ```swift let nickname: String? = nil let fullName: String = "John Appleseed" let informalGreeting = "Hi \(nickname ?? fullName)" ``` [^1]: string의 경우, Swift는 `\(변수/상수명)` 형태로 간단하게 쓸 수 있는 방법을 제공한다.