본 포스팅은 '스위프트 프로그래밍 (3판) - 야곰 저' 도서와 앨런 Swift 문법 마스터스쿨 강의를 공부하며 정리하는 포스팅입니다.
혹시 틀린 부분이 있거나 질문이 있으시다면 언제든지 댓글 달아주시면 정말 감사하겠습니다 :)
1. 데이터 타입
- 프로그램 내에서 다뤄지는 데이터의 종류
- 스위프트의 기본 데이터 타입은 모두 구조체를 기반으로 구현되어 있음
- 스위프트의 모든 데이터 타입 이름은 첫 글자가 대문자로 시작하는 대문자 카멜케이스를 사용한다.
2. 데이터 타입 종류
설명 | 예시 | |
Int | 정수 - 최대값 9,223,372,036,854,775,807 |
-5, 1, 3, 100, 1000... |
Float, Double | 부동소수 타입 - Float은 최대 6자리, Double은 최대 15자리 까지의 정보를 정확하게 저장 - Swift에서는 Double 사용을 권장함 |
-5,324, -2.0, 3.5... |
Character | 단 하나의 문자, 큰 따옴표 (" ") 사용 | "A", "b", " " |
String | 문자열, 큰 따옴표 (" ") 사용 | "하이", "" |
Bool | 불리언 타입, true / false의 값만 가짐 - toggle() : true - false 반전 |
*Float보다 Double을 권장하는 이유?
- 메모리를 조금 더 차지하더라도 정확성을 위해서
https://hongssup.tistory.com/559
*String의 다양한 활용 (코테에서 문자열 다룰일이 많아서 준비하면서 정리했었던 포스팅)
3. 타입 문법
예시 | |
타입 주석 | var name: String = "조이" // 데이터 타입을 명시하는 것을 의미한다. |
타입 추론 | var name = "조이" // 데이터 타입 명시 X -> 컴파일러가 데이터 타입을 추론함 |
타입 안정성 | var number = 12 number = 3.14 // 데이터 타입이 서로 다르므로 number에 Double 자료형을 할당할 수 없음 |
4. 타입 별칭 (typealias)
스위프트는 기본 데이터 타입과 사용자가 만든 데이터 타입 모두 별칭을 지정할 수 있다.
이 때 사용하는 스위프트 문법을 typealias 라고 함
보통 아래 경우에서 자주 사용하는 것 같다.
1) 코드를 간결하게 하기 위해 구조체나 클래스의 선언부가 길어서 한 줄에 다 담기지 않거나, 이를 사용할 일이 잦을 때
2) 객체지향 프로그래밍을 할 때, 객체를 유의미하게 지정하여 구분하고 싶을 때 가독성을 높이기 위함
(예를 들어 피자를 만드는 프로그램을 만드는데 재료를 String으로 하면 헷갈리니까 typealias Cheese = String 이런식으로 한다든지..?!)
+ 책을 보니 튜플은 타입 이름에 해당하는 키워드가 없어서, 특정 튜플을 자주 사용하는 경우에도 쓰는 것으로 보인다.
//1. 의미를 부여하여 편리하게 사용하고 싶을 때
typealias Cheese = String
typealias count = Int
let cheese: Cheese = "모짜렐라"
let cheeseCount: count = 0
//2. 한 줄에 코드가 너무 길어질 때
typealias PostSectionDataSource = RxCollectionViewSectionedAnimatedDataSource<BasicPostSection>
//3. 특정 튜플을 쓸 일이 잦을 때
typealias PersonTuple = (name: String, age: Int, height: Double)
let yuri: PersonTuple = ("yuri", 10, 180.0)
print("\(yuri.name), \(yuri.age), \(yuri.height)") //yuri, 10, 180.0
'🐦 Swift' 카테고리의 다른 글
[Swift] 변수와 상수, 의미 있는 이름 (0) | 2023.05.09 |
---|---|
[Swift] 옵셔널, 옵셔널 바인딩, 강제 추출, nil-coalescing (0) | 2023.03.20 |
[Swift] 함수 (0) | 2023.03.15 |
[Swift] 흐름제어 (0) | 2023.03.14 |
[Swift] 스위프트 (0) | 2023.03.07 |