본 Lecture Note는 yagom.net의 '스위프트 기초' 강의를 수강하고 작성하였습니다.
Swift의 기본 데이터 타입을 알아보겠습니다. 본 포스팅에서는 Bool
, Int
, UInt
, Float
, Double
, Character
, String
, Any
타입과 이와 맥이 조금 다른 AnyObject
와 nil
을 다룹니다. Swift는 데이터 타입에 굉장히 엄격한 언어이므로 타입을 정확하게 구분하여 사용할 수 있어야 합니다.
Note: 데이터 타입을 엄격하게 관리함으로써 암시적으로 이루어지는 데이터 타입의 변형으로부터 일어날 수 있는 예기치 않은 결과를 일으키는 경우를 방지할 수 있습니다.
Bool
참(true), 거짓(false)을 표현하기 위한 타입입니다.
var someBool: Bool = false
someBool = 100 // 에러 발생! Bool 타입에 정수를 할당할 수 없습니다.
Int
정수형 타입입니다. 기본적으로 64비트 정수형 타입을 사용합니다. 대략 -922 ~ 922경까지의 정수를 다룰 수 있습니다.
var someInt: Int = 100
부호가 없는 정수 (Unsigned Integer)입니다. 대략 0 ~ 1844 경까지의 0과 양의 정수를 다룰 수 있습니다.
var someUInt: Int = 100
var someInt: Int = 1
someUInt = someInt // 에러 발생! 같은 정수라도 타입이 다르므로 값을 할당할 수 없습니다.
Float
32비트 부동소수형 타입입니다.
var someFloat: Float = 3.14
someFloat = 1 // 소숫점을 기재하지 않아도 할당이 가능합니다.
Double
64비트 부동소수형 타입입니다.
var someDouble: Double = 3.14
var someFloat: Float = 3.14
someDouble = 3 // Float과 마찬가지로 소숫점을 기재하지 않아도 할당이 가능합니다.
someDouble = someFloat // 에러 발생! 다른 타입이므로 할당이 불가능합니다.
Character
한 글자(문자)를 표현하기 위한 타입입니다. 값을 큰 따옴표로 감싸 표현합니다. Unicode를 사용하기 때문에 Unicode로 표현 가능한 모든 문자를 할당할 수 있습니다.
var someCharacter: Character = "😆"
someCharacter = "🐣"
someCharacter = "가"
someCharacter = "Ryan" // 에러 발생! 한 문자가 아닌 String 타입이므로 할당이 불가능합니다.
String
Character 타입과 달리 여러 문자를 표현할 수 있습니다. Character 타입과 마찬가지로 큰 따옴표로 값을 감싸 표현합니다.
var someString: String = "하하하! 😄"
someString = someString + "웃으면 복이 와요." // 연산자를 통해 문자열을 합칠 수 있습니다.
var someCharacter: Character = "😆"
someString = someCharacter // 에러 발생! 다른 타입이므로 할당할 수 없습니다.
Any
Swift의 모든 타입을 지칭하는 키워드입니다.
var someAny: Any = 100
someAny = "😆"
someAny = 2.1332
someAny = "어떤 타입도 수용 가능합니다."
let someDouble: Double = 3.141592
someDouble = someAny // 에러 발생! 타입이 다르므로 할당할 수 없습니다.
someAny = someDouble // Any 타입이므로 할당할 수 있습니다.
AnyObject
모든 클래스 타입을 지칭하는 프로토콜입니다.
class SomeClass {}
var someAnyObject: AnyObject = SomeClass()
someAnyObject = 123.12 // 에러 발생!
nil
엄밀히 이야기하면 타입이 아닙니다. 존재하지 않음을 나타내는 키워드입니다. 타 언어의 Null을 뜻하는 키워드입니다.
var someAny: Any = nil // 에러 발생! 어떤 데이터 타입이든 할당할 수 있지만 값이 없는 nil은 할당할 수 없습니다.
var someAnyObject = nil // 에러 발생!
다음 포스팅에서는 데이터 타입 중 컬렉션 타입에 대해 알아보도록 하겠습니다.