반응형


// 반갑습니다, 에르의 생각발전소입니다 :)

// 이번 시간 다뤄볼 주제는 switch구문입니다!














 

/* switch 구문

 switch 비교 대상 {

                case pattern 1 :

                            statement   

                case pattern 2 :

                            statement

                default :   

                            statement

 }


다양한 가능성이 있는 여러개의 조건 비교에 효율적으로 사용하기위해

 if~ else if 구문 보다는 swift구문이 적합하다고 있습니다.

 case pattern 마다 조건을 제시하고 default값에는 모든 변수를 대변할 구문을 실행합니다.

 기존의 C언어나 자바 많은 언어에도  switch구문이 있지만, 스위프트의 switch구문과의 차이점이 있습니다.

 스위프트의 switch구문은 일치하는 패턴이 있을 경우 해당 패턴과 일치하는 블록의 실행 코드를 처리한 전체 분기문을 종료하고

 다음 구문을 진행합니다.

 뒤에 일치하는 패턴이 있더라도, 처음 일치하는 case구문만 실행합니다.

 그리고 기존의 C 자바는 추가적으로 일치하는 case구문이 있더라고 실행됩니다.

 break구문이 따로 있어야만 멈추는게 기존 언어들의 특징이지요.

 이부분에서는 스위프트가 진화했다고도 있을 같습니다.

 

 

var con = 1

switch con {

case 1 :

    print("해당 값은 1 입니다.")

case 2 :

    print("해당 값은 2 입니다.")

case 3 :

    print("해당 값은 3 입니다.")

default :

    print("어느 조건과도 일치하지 않습니다.")

}


// break구문에 대해서 말씀드렸는데

// 스위프트에서도 타언어처럼 사용할 있는 장치가 있습니다.

// 바로 fallthrough 기능입니다.

// fallthrough 삽입하면, 해당 케이스는 무시하고 다음 케이스로 이동합니다.

// 아래 예제를 보시지요!


let test : Character = "L"

switch test {

case "l" :

    print("글자는 l입니다.")

case "L":

    fallthrough

default :

print("일치하는 글자가 없슴당")

}


// case "L" 해당되는 값임에도 fallthrough 붙어있음으로써, default값이 실행되었습니다.

// 명시적으로 구분해서, 스위치구문을 탄탄히 만들 있습니다.

//  위 예제들 실행시 나오는 값들 사진입니다 :)

반응형
by 발전소장 에르 :) 2016. 6. 1. 08:00
반응형

안녕하세요~ 에르의 생각발전소입니다 :)

이번 시간에 다뤄볼 주제는 GUARD 구문 입니다!

저번 시간에 다뤄보았던 if 구문에 이어 guard 역시 

if구문의 친구랍니다 :)

새로운 플레이그라운드를 열어 따라해주세요











// guard 구문!


// guard 구문도 if구문처럼 주어진 식이 참인지 거짓인지 판단하는 구문인 반면, 


// 차이점은 guard구문에는 else 필수이나, 식의 결과가 참일 때는 실행되는 식이 없다는 점입니다.                  그리고 if 구문과 guard 구문은 사용자의 방식에 따라서 서로 상호호환이 가능합니다.


// guard 조건 혹은 표현식 else {


//        실행구문


// }                                            가드구문의 기본 식입니다!


// 가드구문은 주로 코드가 특정조건을 만족하는지 실행전에 미리 점검하기위한 용도로 사용합니다. 예제를 보시죠



func divide(base:Int)  {

    let result = 100/base

    print(result)

}

// 함수를 하나 만들었습니다. 디바이드라는 이름을 가진 함수는 베이스라는 인트타입의 베이스라는 이름의 매게변수를 가지며,  리슐트라는 상수는 베이스 나누기 100이다. 그리고 값을 출력하라! 만약 여기서 베이스의 값이 0 이라면? 에러가 발생합니다. 고로, 이런 에러를 방지하기위해


func guraddivide (base : Int) {

    

    guard base != 0 else {

        print("값을 다시 확인해주세요.")

        return

    }

    let result = 100 / base

    print(result)

}


// 가드를 사용하여, 일종의 안전벨트 혹은 퓨즈를 설계할 있습니다.

// 그래서 값이 0 경우 가드구문이 실행되며, 함수를 종료시키는 반면 0 이상일 경우 아래 구문을 실행시키는거죠

// 위에서 말씀드렸다시피 가드구문과 이프구문은 호환이 가능합니다!


func ifdivide (base : Int) {

    if base == 0 {

        print("연산이 불가함.")

        return

    }

    let result = 100 / base

    print(result)

}


//가드대신 이프로 만약 베이스가 0 경우 함수를 끝내도록 설계되어있습니다.

// 여기서 ~ 차이점은 가드구문은 연산의 필요 조건을 충족시킨다면,


// 이프구문은 실패할 조건을 충족시켜야합니다! 기억해주세요!


2016/04/19 - [프로그래밍발전소 ♫] - 160418 swift 란? 스위프트 언어에 대해서 알아봅시다. let과 var편


2016/04/20 - [프로그래밍발전소 ♫] - 160419 Swift part.2 String과 Numbers에 대해서


2016/04/23 - [프로그래밍발전소 ♫] - 160423 Swift Tuple, Typealias 편 ! :) 튜플과 타입얼라이어스


2016/04/25 - [프로그래밍발전소 ♫] - 160424 collection Array 편 :)


2016/05/05 - [프로그래밍발전소 ♫] - 160505 Swift Collection: Dictionary 와 Set


2016/05/05 - [프로그래밍발전소 ♫] - 160505 Swift 구문편! if, for, switch 까지!


2016/05/06 - [프로그래밍발전소 ♫] - 160506 Swift Optional 스위프트의 꽃! 옵셔널에 대해 알아보자!


2016/05/07 - [프로그래밍발전소 ♫] - 160507 Swift Optional 스위프트의 꽃 옵셔널! 마지막편!


2016/05/07 - [프로그래밍발전소 ♫] - 160507 Swift Function 이번엔 프로그래밍의 꽃! 함수편!


2016/05/12 - [프로그래밍발전소 ♫] - 160512 Swift Function 스위프트 함수편!


2016/05/12 - [프로그래밍발전소 ♫] - 160512 Swift 단순 구문 , 흐름 제어 구문 for , for ~ in구문 :)


2016/05/13 - [프로그래밍발전소 ♫] - 160513 Swift While 구문편 :)


2016/05/15 - [프로그래밍발전소 ♫] - 160515 Swift IF문! 조건문에 대해서 :)



반응형
by 발전소장 에르 :) 2016. 5. 27. 18:21
| 1 |