티스토리 뷰

프로그래밍/Swift

Swift 기초 공부1

시르베어 2025. 1. 27. 01:04

데이터 타입

  • 다른 데이터 타입간의 데이터 교환이 엄격하게 금지되어 있음 ( 타입 캐스팅이 필수적 )
  • 타입 별칭(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)
```

컬렉션형

  1. 배열 ( Array )

    • 같은 타입의 데이터를 순서대로 저장
    • 중복된 값 가능
  2. 딕셔너리 ( Dictionary )

    • 순서에 상관없이 같은 타입의 키와 값의 한쌍으로 구성 ( 키와 값은 타입이 달라도 됨 )
    • 키는 중복으로 불가능
  3. 세트 ( 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는 축약형이 없음
  4. 열거형 ( 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
  • 표준 라이브러리 메서드에서 종종 사용하기 때문에 알아두기

옵셔널

'프로그래밍 > 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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함