var someBool: Bool = true
someBool = false
// someBool = 0 // 컴파일 오류발생
// someBool = 1 // 컴파일 오류발생
스위프트에서는 1과 0을 True와 False로 활용할 수 없다.
// Int
var someInt: Int = -100
// someInt = 100.1 // 컴파일 오류발생
//UInt
var someUInt: UInt = 100
// someUInt = -100 // 컴파일 오류발생
// someUInt = someInt // 컴파일 오류발생 Int의 값을 넣을수도 없다.
// Float
var someFloat: Float = 3.14
someFloat = 3
// Double
var someDouble: Double = 3.14
someDouble = 3
// someDouble = someFloat // 컴파일 오류발생
Int
타입에는 실수를 넣을 수 없고 UInt
타입에는 양수만 넣을 수 있기 때문에 음수를 넣을 수 없다. 마찬가지의 이유로 Float
와 Double
도 타입에 맞는 값을 할당해야한다.
참고로 정수값들은 Float
와 Double
에 넣어도 크게 상관 없다.
이처럼 Swift는 데이터 타입에 엄격한 언어이다.
따라서 다른 데이터 타입간의 교환이 매우 어려운 언어라고 할 수 있다.
// Character
var someCharacter: Character = "🇰🇷"
someCharacter = "😄"
someCharacter = "가"
someCharacter = "A"
// someCharacter = "하하하" // 컴파일 오류발생
print(someCharacter)
Character
는 문자 타입이다. 하나의 문자, 유니코드의 값을 할당할 수 있다.
그러나 "하하하" 같이 여러 문자가 있는 문자열 같은 값을 할당할 경우 오류가 발생한다.
// String
var someString: String = "하하하 😄 "
someString = someString + "웃으면 복이와요"
print(someString)
// someString = someCharacter // 컴파일 오류발생
String
같은 경우는 Character
과 달리 여러 문자를 넣어 줄 수 있다.
또한 연산을 사용해서 문자열을 합쳐줄수도 있다.
하지만 앞서 다른 타입들과 마찬가지로 String
과 Character
의 수용은 불가능하다.
따라서 Swift 에서 다른 데이터 타입과 자료 교환은 암시적으로 불가능하다고 생각하면 된다.