Swift는 선언된 변수의 타입을 자동으로 추론합니다. 변수가 Int 형인지 또는 Double 형인지 추가 정보를 입력하지 않아도 된다는 의미입니다. Swift는 등호 표시(=) 오른쪽에 무엇이 있는지 확인하는 것만으로도 변수나 상수의 타입을 추론합니다.
타입은 컴퓨터 언어가 값과 값을 저장하는 컨테이너를 분류하는 데 사용하는 구조입니다. 타입은 값, 변수 또는 상수의 특징을 분명하게 정의하여 애매 모호함을 없애고 코드에 명확성을 부여합니다. 타입은 변수나 상수를 각각의 값에 확실하게 할당합니다. Swift는 타입을 확실하게 인식하는 언어이며, 이 내용은 앞서 사용한 예제를 통해서도 확인할 수 있습니다.
아래 표는 Swift에서 사용되는 기본적인 타입을 나타냅니다. 원래 이보다 더 많은 타입이 있지만, 우선은 이 정도를 알아보도록 하겠습니다.▼
타 입 | 특 징 | 예 제 |
---|---|---|
Bool | 참 또는 거짓 중 하나를 표현하는 이진법 | True, False |
Int, Int32, Int64 | 큰 수(분수 제외)를 표현하는데 32 또는 64비트 음수나 양수의 정수값 사용 | 4, 543, -674837, 5745 |
Int8, Int16 | 작은 수(분수 제외)를 표현하는데 8 또는 16비트 음수나 양수의 정수값 사용 | -23, 58, 145 |
UInt, UInt32, UInt64 | 큰 수(분주 제외)를 표현하는데 32 또는 64비트 양수값 사용 | 5, 132, 70, 10023 |
UInt8, UInt16 | 작은 수(분수 제외)를 표현하는데 8 또는 16비트 양수값 사용 | 35, 86, 254 |
Float, Double | 음수 또는 양수의 부동 소수점 또는 분수를 포함할 수도 있다 | 311.542, -3002.5899, 17.0 |
Character | 단일 글자, 숫자, 또는 다른 부호를 큰 따옴표로 묶어서 표현 | "T", "K", "*", "3" |
String | 일련의 문자를 큰 따옴표로 묶어서 표현 | "Fish", "Pigs", "New York" |
1. Limit 알아보기
위의 표에 나타난 타입은 각각 최고치 및 최저치를 가지고 있습니다. 즉, 각각의 타입은 최저치보다 더 작지 않은 숫자 또는 최대치보다 더 크지 않은 수를 저장할 수 있습니다. 그 이유는 수치 타입은 비트를 대변하는 데 사용할 수 있는 비트가 유한하기 때문입니다. Swift는 편리하게 각각의 타입에 저장된 최댓값과 최솟값 정보를 얻을 수 있게 해줍니다.
.min 또는 .max 를 타입 이름의 마지막에 추가함으로써 최댓값 및 최솟값의 용량을 정의할 수 있습니다.▼
2. 타입을 바꿀 수 있을까?
타입이 값, 상수, 또는 변수의 고유한 특징을 가지고 있기 때문에 다른 타입끼리 상호작용할 때 어떤 규칙이 적용되는지 궁금할 경우가 있다. 앞 장에서 다룬 예제에서 Double형 변수를 Int형 변수로 할당하려고 했던 것이 있었습니다. 이 부분을 재기해 보겠습니다.
x의 값을 Int 형으로 y의 값을 Double형으로 할당했습니다. ▼
그리고 y의 값을 x에 할당하려고 시도했습니다.▼
그런데 y를 x 에 할당하려고 시도하니 에러가 발생했습니다.
그래서 y를 Int형으로 타입 변환을 해주었습니다.▼
이런 처리를 변환(casting or conversion)이라고 하고, 한 가지 타입의 값을 강제로 다른 타입의 값으로 할당하는 것을 말합니다. 컴퓨터 언어에서는 "타입 변환(Type Conversion)"으로도 알려져 있습니다. 모든 컴퓨터 언어가 타입 변환을 처리하는 규칙을 가지고 있으며 Swift도 예외 없이 규칙이 있습니다.
한 가지 전형적인 규칙은 타입 변환이 "유사한" 타입 사이에서만 이루어진다는 것입니다. C 언어처럼 유명한 프로그래밍 언어는 Int 형을 Double 형으로 또는 Double 형을 Int 형으로 변환할 수 있습니다. C 언어에서는 정수형 및 Double 형이 모두 수치 타입이기 때문에 그렇습니다. 그러나 타입이 근본적으로 다르므로 정수를 문자열로 강제로 선언하는 것은 올바른 타입 변환이 아닙니다. 그러나 Swift는 이 부분에 있어서 조금 더 유연합니다.
변수 t 가 선언되었고 활식하레 Int 형인 숫자도 할당되었습니다. 또 다른 변수 s 는 정수형인 변수 t의 변환된 버전인 문자열형으로 선언되었습니다.▼
문자열을 Int형이나 심지어 Double 형으로 타입 변환시킬 수 있을까요?
예전 버전의 Swift에서는 아래 그림과 같이 타입 변환을 시도하면 에러 메시지를 출력하였습니다. 즉, Swift 언어로 수치 타입을 문자열 타입으로 변환하는 것은 가능하지만, 그 반대의 타입 변환은 허용하지 않았었습니다(past tense: 과거형이라는 얘기죠). ▼
그러나 Swift가 버전업 하면서 이런 에러는 나타나지 않고 타입형 뒤에 물음표 (?)가 붙어 있는 것을 알 수 있습니다. 이 물음표는 특별한 타입인 옵셔널(optional) 형임을 의미합니다. 과거에는 문자열을 정수형으로 바꾸는 메서드인 toInt() 를 사용하였는데, 이제는 이 메서드를 사용할 필요없이 그냥 옵셔널형태로 알아서(?) 자동 처리 해줍니다.
'Programming > Swift for Beginners' 카테고리의 다른 글
[Swift] 009 Strings (문자열) for beginners (0) | 2015.12.09 |
---|---|
[Swift] 008 Data Type - Being Explicit (자료형 - 명시적 선언) - 2 for beginners (0) | 2015.12.09 |
[Swift] 006 Constants are consistent (상수는 변하지 않는 값) for beginners (0) | 2015.12.09 |
[Swift] 005_The power of declaration (변수 선언) for beginners (0) | 2015.12.07 |
[Swift] 004_Diving into Swift (Swift 실행하기) for beginners (0) | 2015.12.06 |