하루에 0.01%라도 성장하자

Develop/iOS

Swift Swift의 Switch

뚠님 2019. 5. 8. 11:19
반응형

Swift

 

 

Switft의 Switch는 일반 언어들과 조금 다르다.

 

따라서 사실 if나 switch문은 기본적인 것이라 포스팅을 안하려고 했는데, switch문의 문법이 조금 특이하여 포스팅을 한다.

 

Switch문에는 default가 꼭 있어야 한다.

 

다른 언어는 switch문에 default가 있어도 되고 없어도 된다.

하지만 Switft는 default가 없는경우 에러가 발생한다.

이또한 nil 문제가 발생하지 않도록 언어적으로 제약을 걸어놓은것 같다.

 

switch문에는 범위연산자가 있다.

 

이건 바로 소스를 보자.

 

let num : Int = 100;

switch(num){
    case 1 :
        print("1");
    case 1..<100 : 
    	print("1~99");
    case 101...Int.max :
    	print("over 100");
    default :
    	print("기본값");
}

 

소스에 등장하는 범위 연산자가 있는데 `..<` 바로 이것이다.

이건 1보다 크고 100보다 작은 범위 연산자 인데 다른 언어에는 존재하지 않는 연산자이다.

 

최소값 ..< 최대값 // 미만
최소값 ... 최대값 // 포함

 

fallthrough

 

Switft의 switch는 break;를 사용하지 않아도 자동으로 break처리가 된다.

편리하긴 하나 아래와 같은 소스에서는 조금 불편 할 수 있다.

 

var str : String = "TEST";

switch(str){
    case "TTTT":
    case "TEST":
    	print("TEST입니다.");
    default : 
    	print("default입니다.");
}

 

많이 사용하는 꼼수(?)인데 str의 값이 TTTT거나 TEST일 경우 TEST입니다를 출력하는 문구다.

다른 언어에서는 가능하나 Swift에서는 str이 TTTT일 경우 아무런 동작도 하지 않는다.

break;가 생략되어 있기 때문에 TTTT구문에서 실행되고 break되기 때문이다

 

이럴때 사용하는것이 fallthrough다.

 

var str : String = "TEST";

switch(str){
    case "TTTT":
    	fallthrough
    case "TEST":
    	print("TEST입니다.");
    default : 
    	print("default입니다.");
}

 

이렇게 사용하면 TTTT일 경우 break하지 않고 아래 case로 넘어간다.

반응형

'Develop > iOS' 카테고리의 다른 글

Swift 옵셔널(Optional)  (0) 2019.05.08
Swift 반복문  (0) 2019.05.08
SandBox 제약으로 보안을 강화한다.  (0) 2019.05.04
Background Service 제약  (0) 2019.05.04
Xcode 사용법  (0) 2019.05.03