티스토리 뷰
데이터 타입
- 다른 데이터 타입간의 데이터 교환이 엄격하게 금지되어 있음 ( 타입 캐스팅이 필수적 )
- 타입 별칭(typealias) : 데이터 타입에 임의적인 이름을 지어주는 것
ex) typealias MyInt = Int
튜플
- 이름이 지정되지 않은 '지정된 데이터의 묶음'
```swift
ex1)
var tuple: (String, Int) = ("name", 25)
ex2)
typealias personTuple = (String, Int, Double)
var tuple: personTuple = ("name", 25, 180.7)
```컬렉션형
배열 ( Array )
- 같은 타입의 데이터를 순서대로 저장
- 중복된 값 가능
딕셔너리 ( Dictionary )
- 순서에 상관없이 같은 타입의 키와 값의 한쌍으로 구성 ( 키와 값은 타입이 달라도 됨 )
- 키는 중복으로 불가능
세트 ( Set )
같은 타입의 데이터를 순서없이 저장
중복된 값 불가능
집합관계를 표현하기 쉬움, 교집합(intersection), 여집합(symmetricDifference), 합집합(union), 차집합(subtracting)
let arrs: [Int] = [] // let arr1: Array<Int> = Array<Int>()와 같음 let dicts: [String: Int] = [:] // let dict1: Dictionary<String, Int> = Dictionary<String, Int>() let sets: Set<Int> = [] //let set1: Set<Int> = Set<Int>() - set는 축약형이 없음
열거형 ( Enum )
연관된 항목을 묶어서 표현
추가, 수정 불가능 ( 각 열거형이 고유의 타입으로 인정되기 때문에 버그가 일어날 가능성을 봉쇄할 수 있다)
enum School: String { // 원시값이 없을 경우 타입은 생략가능 case primary case elementary case middle = "중학교" // 원시값(rawValue) } let person: (String,School) = ("name",School.middle) print("\(person.0)의 학력은 \(person.1.rawValue)입니다") // name의 학력은 중학교입니다 let allCases: [School] = School.allCases // 전체 값에 접근이 가능 switch School { // 열거형은 case가 정해져있기 때문에 default를 사용안해도 됨 case .primary: print("primary") case .elementary: print("elementary") case .middle: print("middle") }
연산자
삼항 연산자
- ( 조건 ? A : B ) : 조건이 참(true)면 A를 반환, 거짓(false)면 B를 반환
var number1: Int = 0 if number1 < 10 { print("10보다 작음") }else { print("10보다 크거나 같음") } print("10보다 \(number1 < 10 ? "작음" : "크거나 같음")") // 여러줄을 한줄로 줄일 수 있음
nil 병합 연산자 ( Nil-Coalescing Operator )
- 값이 nil이 될 경우 기본값을 제공해주는 연산자
let valueInt: Int = someOptionalInt != nil ? somOptionalInt! : 0 let valueInt: Int = someOptionalInt ?? 0 // 옵셔널 인트 값을 가져올려고 할때 해당 값이 nil이면 기본값으로 0을 가져오고 아니면 해당 값을 가져옴
흐름제어
Switch
- fallthrough : 다음케이스 실행
- unknown : 열거형에서 내용이 추가될 때를 대비
switch lunchMenu { case .chicken : print("치킨") @unknown case _ : print("메뉴 추가") // unknown은 _와 default에만 붙을 수 있음 }
구문 이름표
- 반복문을 중첩으로 사용할 때 활용
var number: [Int] = [1,2,3,4,5] var loop = 1 numberLoop: for num in number { while true { loop = loop * num if loop > 1000 { break numberLoop } // 중첩 반복문에서 원하는 반복문을 멈출 수 있음 } } print(loop)
함수
종료되지 않는 함수 - 비반환 함수/메서드
- 오류를 던지거나 중대한 시스템 오류를 보고 후 프로세스를 종료(정상적인 반환은 이루어 지지않는다)
- 반환타입 : Never
- ex) fatalError
반환값 무시 함수 - 반환된 값을 사용하지 않아도 됨
- @discardableResult
- 표준 라이브러리 메서드에서 종종 사용하기 때문에 알아두기
옵셔널
- 이전에 정리한 내용이 있어서 해당 내용을 참조
- https://syrbear.tistory.com/2
'프로그래밍 > Swift' 카테고리의 다른 글
| Swift 기초 공부5 (0) | 2025.02.02 |
|---|---|
| Swift 기초 공부4 (0) | 2025.02.02 |
| Swift 기초 공부3 (0) | 2025.02.02 |
| Swift 기초 공부2 (0) | 2025.01.30 |
| 옵셔널 ( Optional ) (0) | 2024.04.16 |
