본문 바로가기
Programming/Kotlin

[Kotlin] Kotlin 기본 강의 (5) - 분기문

by 코딩의성지 2019. 11. 3.

오오~~ 벌써 다섯번 째 기본 강의이다.

 

오늘은 분기문에 대해서 공부해 볼거다.

 

우리가 잘 아는 java 처럼 if , if else , else 를 이용해서 분기를 하는 것도 있지만 이건 다들 아실 거라 생각하고 넘어가겠다.

 

 

When 구문을 사용한 분기 처리

 

Kotlin 에서는 when 이라는 녀석을 이용해서 분기 처리를 할 수 있다. when 은 java 에서 switch case 문과 유사하다.

 

java에서는 정수나 String 만을 ( String 도 java 8 부터 가능 ) 비교할 수 있었는데, Kotlin에서는 이 두가지 뿐만 아니라 다양한 타입에서 비교가 가능하다. 사용하는 형태는 아래와 같다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
when (변수나 수식) {
    값1 -> {
        // 로직
    }
    값2 -> {
        //로직
    }
    값3 -> {
        // 로직
    }
    else -> {
        // 위의 조건이 다 포함이 안될 
    }
}
 

 

 

뭐 딱봐도 어려움은 없을 것이라 생각한다. 아 그래도 java 의 switch case 와 차이를 말하자면 java 와 다르게 따로 break를 안걸어줘도 해당하는 값이 들어오면 분기문을 나간다는 차이가 있다.

 

조금 더 확실하게 공부하기 위해 예제를 작성해보겠다.

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
fun main ( args : Array<String>) {
    var n1 = 10;
 
    // 기본적인 when 구문
    when (n1) {
        1 -> {
            println("n1 : ${n1}");
        }
        2 -> {
            println("n1 : ${n1}");
        }
        3 -> {
            println("n1 : ${n1}");
        }
        else -> {
            println("n1 : ${n1}");
        }
    }
 
    var s1 = "바보";
 
    // String 비교
    when (s1) {
        "바보" -> {
            println("나는 바보입니다.");
        }
        "천재" -> {
            println("나는 천재입니다.");
        }
        else -> {
            println("나는 사람입니다.");
        }
    }
 
    // 값 여러개에 포함될지 여부 체크
    when (n1) {
        12 -> {
            println("n1 is 1 or 2");
        }
        345  -> {
            println("n1 is 3 or 4 or 5");
        }
        else -> {
            println("n1 is not 1, 2, 3, 4, 5");
        }
    }
 
    // in 연산자 사용하기
    when (n1) {
        in 1..2 -> {
            println("n1 is 1 or 2");
        }
        in 3..5  -> {
            println("n1 is 3 or 4 or 5");
        }
        !in 1..5 -> {
            println("n1 is not 1, 2, 3, 4, 5");
        }
    }
 
    var f1 = 1.5;
 
    // Float 형 비교
    when (f1) {
        0.5 -> {
            println("f1 : ${f1}");
        }
        1.5 -> {
            println("f1 : ${f1}");
        }
        2.5 -> {
            println("f1 : ${f1}");
        }
        else -> {
            println("f1 : ${f1}");
        }
    }
 
    var fn1 = f1(1);
    var fn2 = f1(2);
    var fn3 = f1(3);
    var fn4 = f1(4);
 
    println("fn1 : ${fn1}");
    println("fn2 : ${fn2}");
    println("fn3 : ${fn3}");
    println("fn4 : ${fn4}");
 
}
 
// when 구문 함수에서의 활용
// 해당하는 값의 { } 안의 값이 리턴됨
fun f1 (n1 : Int) = when(n1) {
    1 -> {
        1; //1이면 1 리턴
    }
    2 -> {
        2; //2이면 2 리턴
    }
    3 -> {
        3; //3이면 3 리턴
    }
    else -> {
        -1; // 그외의 값에는 -1 리턴
    }
}
 
 

각각의 경우에 대해 예제를 작성해보았다 ! 달아놓은 주석을 보면 사용할 수 있을 것이다. 한번 실습해보기를 권한다.

 

위의 코드르 실행해보면 아래와 같은 결과가 나온다.

 

오늘은 여기까지만 공부하자 ! 그럼 오늘도 열심히 코딩하자 ㅎㅎ

반응형

댓글