타입 추론(Type Inference)
Swift는 생성 될 때 주어진 값에 따라 각 변수와 상수에 유형을 할당합니다. 따라서 아래와 같은 코드를 작성하면 문자열 String
이 포함되어 있음을 알 수 있습니다.
let str = "Hello, playground"
위 사진과 같이 자동으로 String값으로 할당되었습니다. 이렇기에 나중에 Int
나 Bool
을 할당 할 수 없습니다. 이를 유형 추론(type inference)이라고합니다. Swift는 생성 방법에 따라 어떤 유형을 추론 할 수 있습니다.
다음과 같이 Swift의 유형 추론에 의존하지 않고 데이터 유형에 대해 명시 할 수 있습니다.
어노테이션 타입
let album: String = "Dynamite"
let year: Int = 2020
let height: Double = 1.78
let taylorRocks: Bool = true
유형 추론
'Booleans'은 정수의 짧은 유형 이름인 Int
와 같은 방식으로 짧은 유형 이름인 Bool
을 가집니다.
let album = "Dynamite"
let year = 2020
let height = 1.78
let taylorRocks = true
어노테이션 타입
타입 어노테이션이란, 변수나 상수를 선언할 때 그 타입을 명시적으로 선언해 줌으로써 어떤 타입의 값이 저장될 것인지를 컴파일러에 직접 알려주는 문법. 변수나 상수명 뒤에 콜론 :
을 붙이고, 이어서 저장될 값의 타입을 작성 합니다.
var year : Int // 명시적인 Int 타입
var name : String // 명시적인 String 타입
var firstChr : Character // 명시적인 Character 타입
var distance : Double // 명시적인 Double 타입
var pi : Float // 명시적인 Float 타입
var flag : Bool // 명시적인 Bool 타입
// 타입을 명시한 변수 선언
var name : String = "김서근"
var year : Int = 1995
// 타입을 명시한 상수 선언
let firstName : String = "서근"
let birthYear : Int = 1995
위의 주어진 구문은 모두 네 개의 변수와 상수가 선언되어 있습니다.
이같은 타입 어노테이션을 통한 컴파일러는 추론 없이 각각의 변수나 상수 타입을 정확히 인지할 수 있습니다.
Swift에 어노테이션 유형이 있는 이유는?
Swift를 배울 때 자주 묻는 질문은,
"Swift에 어노테이션 유형이있는 이유는 무엇입니까?"
이며 일반적으로 "Swift에서 어노테이션 유형을 사용해야하는 경우" 가 뒤 따릅니다.
첫 번째 질문에 대한 대답은 주로 다음 세 가지 이유 중 하나입니다.
- Swift는 어떤 유형을 사용해야하는지 파악할 수 없습니다.
- Swift가 기본값과 다른 유형을 사용하기를 원합니다.
- 아직 값을 할당하고 싶지 않습니다.
첫 번째는 일반적으로 고급 코드에서만 발생합니다.
예를 들어 인터넷에서 일부 데이터를 로드하는 경우, 유명한 연예인 이름은 모든 사람들이 알고 있지만 Swift는 이를 미리 알 수 없으므로 이를 알려줘야 합니다.
두 번째는 Swift를 더 깊게 배울 때 일반적인 것이지만, 간단한 예를 들자면 어디에서나 n.n
(소수점)을 계속 쓸 필요 없이 이중 변수(double variable)를 만드는 것입니다.
var percentage: Double = 99
ercentage = 99.0
의 값으로 double
을만듭니다. 우리는 Int
를 할당했지만 유형 주석을 사용하면 원하는 실제 데이터 유형이 Double
이라는 것을 분명히 알 수 있습니다.
세 번째는 변수가 존재할 것이라고 Swift에 알리고 싶지만 아직 그 값을 설정하고 싶지 않을 때 발생합니다. 이것은 Swift의 많은 곳에서 발생하며 다음과 같습니다.
var name: String
name
에 나중에 String
을 할당할 수 있지만 Swift는 그것이 유효하지 않다는 것을 알고 있기 때문에 다른 유형을 할당 할 수 없습니다.
언제 Swift에서 타입 어노테이션을 사용해야합니까?
의 질문에 대답 일반적으로 개인 스타일에 따라 다르기 때문에 훨씬 더 주관적입니다.
보통은 어노테이션타입을 사용하는 것을 추천합니다.
즉, Swift가 사용자가 저장 한 데이터를 기반으로 사물의 유형을 파악하도록합니다.그 이유는 다음과 같습니다.
- 내 코드를 더 짧고 쉽게 읽을 수 있습니다.
- 초기 값을 변경하여 유형을 변경할 수 있습니다.
예시
var sales: Double = 100_000
var distance: Double = 320
지금까지 배운것을 요약하자면...
- 변수를 만들때는 :
var
상수를 만들때는 :let
. 가능하면 자주 상수let
를 사용하는 것이 좋습니다. - 문자열은 큰 따옴표
"
로 시작하고 끝나지만, 여러 줄에 걸쳐 실행하려면 큰 따옴표 세 세트"""
를 사용해야합니다. - 인티저
Int
는 정수를 보유하고 더블double
은 소수를 보유하며 부울Bool
은true
또는false
를 보유합니다. - 문자열 보간(interpolation)을 사용하면 다른 변수 및 상수에서 문자열을 생성하여 해당 값을 문자열 안에 배치 할 수 있습니다.
\()
- Swift는 어노테이션타입(유형추론)을 사용하여 각 변수 또는 상수에 유형을 할당하지만 원하는 경우 명시적 유형을 제공합니다.
Annotations TEST: 문제를 풀려면 이곳을 클릭해주세요.
읽어주셔서 감사합니다🤟
'SWIFT > Grammar' 카테고리의 다른 글
Swift : 기초문법 [세트(SET)] (3) | 2021.02.18 |
---|---|
Swift : 기초문법 [배열(Array)] (0) | 2021.02.18 |
Swift : 기초문법 [ 변수와 상수] (1) | 2021.02.18 |
Swift : 기초문법 [문자열 보간(String interpolation)] (0) | 2021.02.18 |
Swift : 기초문법 [Double / Float / Booleans] (0) | 2021.02.17 |