ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift #5 - 제어문
    Swift의 온도 2021. 1. 7. 05:23

     

    1. 반복문

     

    - Swift의 반복문

    #for 반복문

    #while, repeat-while

     

    - C Style For Loop

    #Swift 3에서 삭제

    #C Style Loop 대신 for-in과 범위 사용

     

    - 범위를 이용한 반복, 배열 순회

    *범위 연산자(C 스타일의 for 대체)
     
    for i in 0..<10{
        print("For 반복문 \(i)")
    }
     
    *Array, Set과 사용하기
     
    for item in [1,2,3,4,5] {
        print(item)
    }
    cs

     

    - 딕셔너리와 문자열 순회

    *딕셔너리 - 튜플
     
    for (kor,eng) in dic1 {
        print("Key : \(kor) Value : \(eng)")
    }
     
    *문자열의 뷰(콜렉션)
     
    for ch in str. characters{
        print(ch)
    }
    cs

     

    - while 반복

    #while 반복문

    *while
     
    var i = 1
    while i < 10 {
        i += 1
    }
     
    *repeat-while
     
    var j = 1
    repeat{
        j += 1
        if j > 10 {break}
    while true
    cs

     

    2. 조건문

     

    - if 조건문

    *조건부의 괄호 생략 가능
    *바디의 중괄호{} 생략 불가 // 1줄도 불가
     
    if 3 > 2 {
        print("3이 2보다 크다!")
    }
     
    *조건절:결과가 Bool
    *nil 비교시 ! =nil, ==nil 을 붙여야 함
     
    if obj {} // 에러
    if obj != {}
    cs

     

    - if와 else

    var bloodType = "C"
    if bloodType == "A" { //bloodType에 "A" 기입시
        print("혈액형은 A")
    }
    else if bloodType == "B" || bloodType == "O" { // bloodType에 "B", "O" 기입시
        print("B나 O형")
    }
    else{
        print("그러면 AB형?"// bloodType에 "A", "B", "O" 를 제외한 값을 기입시
    }
    cs

     

    - if-let 바인딩

    #바인딩

    *유효한 값 판단(nil 여부)
     
    if let val = someFunc(){
        print("\(val)")
    }
     
    *다중 바인딩
     
    if let val1 = someFunc()
    let val2 = anotherFunc(){
        print("val1, val2는 모두 유효한 값")
    }
    cs

     

    - 버전 검사

    *버전 체크:#available(FLATFORM VERSION)
     
    if #available(iOS 10,macOS 10.12*) {
        // iOS 10이상, macOS 10.12 이상
    else {
        // iOS 10, macOS 10.12 이전 버전용 코드
    }
    cs

     

    - Early Exit

    #함수와 반복문에서 Exit

     *함수, 반복문 마치기(Exit)

     *정상 종료 Exit : 함수 실행 완료, 반복 조건 채우기

     *종료 외의 Exit : 정상 흐름과 다른 상황에서 마치기

     *함수나 반복문은 다수의 Exit 작성 가능

     *Early Exit : 실행 전 조건을 먼저 검사, 조건에 맞지 않으면 Exit

     

    - guard

    #if 조건문과 유사한 사용

    #Early Exit 용으로 사용

    *guard 문법
     
    guard [조건] else {
        // exit 명령
    }
    cs

     *바디에는 exit 명령 필수

     *조건 작성 방식이 다르다

     *if 문의 조건 : 진행 불가능한 상황의 조건 작성

     *guard 문의 조건 : 진행 가능한 상황의 조건 작성

     *바인딩 스코프

    func example(){
        guard let val = someFunc() else{
        }
        print("val은 유효한 값 : \(val)")
    }
    cs

     

    - guard vs if

    #Early Exit 구현 예

    *if, guard 차이점 비교
    *배열의 원소가 양수면 순회, 음수가 나오면 Exit
     
    *if
     
    for item in Array {
        if item < 0 {
            break
        }
        print(item)
     
     
    *guard
        
    for item in Array {
        guard item > 0 else {
            break
        }
        print(item)
    }
    cs

     

    - Switch

    #Swich 조건문

     *조건의 맞는 case 하나만 실행

     *break 불필요

     *fallthrough : 다음 case 실행

     

    #case 작성

     *모든 상황에 대한 case 작성

     *모든 상황에 대한 case 작성 불가능 : default 필수

     

    #Switch : 사용 예

    *기본 사용
     
    switch someValue {
    case 1:
        print("1")
    case 2:
        print("2")
    default:
        print("Other")
    }
    cs

     

    #범위 연산자

    switch someValue {
    case 123:
        print("1, 2 혹은 3")
        fallthrough
    case 4..<6:
        print("4에서 5사이")
    case 6:
        print("Six")
    default:
        print("나머지.")
    }
    cs

     

    #튜플, 언더스코어(_)

    var tupleVal = (1"One")
    switch tupleVal {
    case(0"Zero"):
    case(0"영")
        print("0,영")
    case(1,_):
        print("1,일")
    default:
        print("Other")
    }
    cs

     

    #밸류 바인딩

    var point = (22)
    switch point {
    case (1let y):
        print("1, \(y)")
    case (let x, 2):
        print("\(x), 2")
    case let(x, y):
        print("\(x), 2")
    default:
        print("\(x), \(y)")
    }
    cs

     

    #바인딩과 조건 : where

    switch point {
    case let(x,y) where x > 0:
        print("x가 0보다 크다")
    case let("x, y") where x < 0 && y > 0
        print("2사 분변")
    default:
        print("그 외")
    }
    cs

    'Swift의 온도' 카테고리의 다른 글

    Swift #7 - 함수  (0) 2021.01.12
    Swift #6 - nil과 옵셔널  (0) 2021.01.08
    Swift #4 - 다수의 데이터 다루기  (0) 2021.01.06
    Swift #3 - 문자와 문자열  (0) 2021.01.05
    Swift #2 - 데이터 타입과 연산자  (0) 2021.01.01

    댓글