어떤 프로그래밍 언어를 하더라도 기본적인 데이터 타입이 정해져 있다.
스위프트에서는 어떤 기본적인 데이터 타입을 사용하는지 공부하려고 한다.
[ Swift 기본 데이터 타입 ]
1. Bool
true와 false 의 값만 가질 수 있는 타입
// Bool: true 와 false 값만 갖음
var someBool: Bool = true
print(someBool)
someBool = false
print(someBool)
================== 출력 결과 ==================
true
false
true나 false 대신 0이나 1의 값을 넣게 되면 Int 타입의 값을 할당할 수 없다는 컴파일 에러가 발생하게 된다.
// 컴파일 에러 발생
someBool = 0
print(someBool)
// 컴파일 에러 발생
someBool = 1
print(someBool)
================== 출력 결과 ==================
error: study03.playground:11:12: error: cannot assign value of type 'Int' to type 'Bool'
someBool = 0
^
error: study03.playground:15:12: error: cannot assign value of type 'Int' to type 'Bool'
someBool = 1
2. Int
정수타입, 64비트 정수형
// Int: 정수, 64비트
var someInt: Int = -100
print(someInt)
================== 출력 결과 ==================
-100
3. UInt (Unsigned Integer)
양의 정수 타입, 64비트 정수형
// UInt: 양의 정수 타입, 64비트
var someUInt: UInt = 100
print(someUInt)
================== 출력 결과 ==================
100
당연히 음수를 넣게 되면 컴파일 에러가 발생하게 된다.
someUInt = -100
print(someUInt)
================== 출력 결과 ==================
error: study03.playground:26:12: error: negative integer '-100' overflows when stored into unsigned type 'UInt'
someUInt = -100
4. Float
실수 타입, 32비트 부동소수형
소수점이 없는 정수를 넣게 되면 부동소수형으로 바뀌어 결과가 나오게 된다.
// Float: 실수 타입, 부동소수형, 32비트
var someFloat: Float = 3.14
print(someFloat)
someFloat = 3
print(someFloat)
================== 출력 결과 ==================
3.14
3.0
5. Double
실수 타입, 64비트 부동소수형
Float 과 마찬가지로 소수점이 없는 정수를 넣게 되면 부동소수형으로 바뀌어 결과가 나오게 된다.
// Double: 부동소수형 타입, 64비트
var someDouble: Double = 3.14
print(someDouble)
someDouble = 3
print(someDouble)
================== 출력 결과 ==================
3.14
3.0
여기서 Float 과 Double 타입이 같은 부동소수형이까 Double에 Float을 넣으면 되지 않을까? 라고 생각할 수 있다.
하지만 타입이 달라 값을 할당할 수 없다는 에러 메시지를 발생하게 된다.
someDouble = someFloat
print(someDouble)
================== 출력 결과 ==================
error: study03.playground:43:14: error: cannot assign value of type 'Float' to type 'Double'
someDouble = someFloat
^~~~~~~~~
Double( )
6. Character
문자 타입, 유니코드 사용, 큰따옴표("") 사용
// Character: 유니코드로 사용할 수 있는 모든 문자를 넣어줄 수 있다.
var someCharacter: Character = "😧"
print(someCharacter)
someCharacter = "가"
print(someCharacter)
someCharacter = "a"
print(someCharacter)
================== 출력 결과 ==================
😧
가
a
문자열을 사용하게 되면 컴파일 에러가 발생한다.
someCharacter = "abc"
print(someCharacter)
================== 출력 결과 ==================
error: study03.playground:54:17: error: cannot assign value of type 'String' to type 'Character'
someCharacter = "abc"
^~~~~
7. String
문자 타입, 유니코드 사용, 큰따옴표("") 사용
String은 문자열에 '+' 를 사용해서 다른 문자열을 더해서 사용할 수 있다.
// String: 유니코드 사용
var someString: String = "하하하"
someString = someString + "더 웃어요!!"
print(someString)
================== 출력 결과 ==================
하하하더 웃어요!!
다른 타입과 마찬가지로 Character 타입을 String에 넣게 되면 컴파일 에러가 발생한다.
someString = someCharacter
print(someString)
================== 출력 결과 ==================
error: study03.playground:62:14: error: cannot assign value of type 'Character' to type 'String'
someString = someCharacter
^~~~~~~~~~~~~
그리고 강의 마지막에 어떤 타입인지 생각해보는 문제가 있었는데
타입 없이 상수가 주어진다면 type(of: ) 를 사용해서 어떤 타입인지 알 수 있었다.
나는 당연히 Float 과 Character 타입으로 나올 줄 알았는데
정수는 Int 타입, 부동소수형은 Double 타입, 문자는 String 타입으로 출력되었다.
let integer = 100
let floatingPoint = 12.34
let apple = "A"
print(type(of: integer))
print(type(of: floatingPoint))
print(type(of: apple))
================== 출력 결과 ==================
Int
Double
String
type(of: ) 를 사용하면 타입이 정해져 있는 경우 해당 타입이 반환되지만
타입이 정해져 있지 않은 경우 동적 타입으로 반환된다고 한다.
정확하게 이해가 되는건 아니지만 좀 더 자세히 공부해야 할 것 같다.
어떤 타입인지 알려주는 is 연산자와 타입을 바꿔주는 as 연산자에 대해서 나중에 따로 공부해서 정리해야 겠다.
- 참고 사이트 -
www.edwith.org/boostcamp_ios/lecture/11128/
developer.apple.com/documentation/swift/2885064-type
'iOS > Swift' 카테고리의 다른 글
[Swift] 5. 컬렉션 타입 (Array, Dictionary, Set) (0) | 2020.09.08 |
---|---|
[Swift] 4. Any, AnyObject, nil (0) | 2020.09.07 |
[Swift] 2. 상수와 변수 (0) | 2020.08.31 |
[Swift] 1. 명명법, 콘솔 로그, 문자열 보간법 (0) | 2020.08.31 |
[Swift] 0. 스위프트 시작하기 전에 (0) | 2020.08.31 |