본문 바로가기

Kotlin/Basic

Kotlin - 함수, 조건문, 반복문 (Function, Conditional, Iteration)

내가 코틀린을 배우면서 코틀린에 있어 특별하다고 생각되는 부분들 또는 메모해두어야 할 점들을 여기에 적어놓으려고 한다.

단일 표현식 함수

단일 표현식 함수 (Single-Expression Function) 는 간단한 함수들의 반환값을 마치 변수에 결과값을 할당하듯 식을 할당하여 만든다. 또한 이 경우 반환형의 타입추론이 가능하므로, 반환형 또한 생략이 가능하다. 자바스크립트의 화살표 함수와 비슷하게 사용할 수 있다.

 

예시

 

fun main() {
    println(add(1,2))
}

fun add(a: Int, b: Int) = a + b;

 

출력

 

3

 

is 연산자

코틀린에는 자료형을 확인할 수 있는 is 연산자가 있다. 따라서 같은 is이지만 파이썬의 is와는 쓰임이 다르다. 가령 아래와 같이 사용할 수 있다.

 

예시

 

fun main() {
    var a: Int = 5
    
    if (a is Int) println("a is Int!");
}

 

출력

 

a is Int!

 

when 문

when은 다중 조건문으로, 다른 언어에서 지원하는 switch문을 좀 더 편리하게 바꾼 기능이다. when은 하나의 변수를 여러 값과 비교할 수 있다는 장점이 있다. 아래와 같이 변수가 어떤 값과 같은 값을 가진다면 어떠한 구문을 실행하라는 것을 중간에 화살표 (->) 를 넣어 표현할 수 있다.

 

예시

 

fun main() {
    println(doWhen("beom"))
    println(doWhen("seok"))
    println(doWhen("somebody else"))
}


fun doWhen (a: String): String {
    when (a) {
        "beom" -> return "hi beom"
        "seok" -> return "hi seok"
        else -> return "you are not beom seok"
    }
}

 

출력

 

hi beom
hi seok
you are not beom seok

 

for 문

코틀린에서의 for 문은 최신 언어들이 제공하고 있는 좀 더 이해하기 쉬운 형태로 사용이 가능하다. 예를 들어, 괄호 안에 index로 사용할 변수명을 i로 다음과 같이 지정하고, 0..4로 0 부터 4 까지 반복하여 반복문을 실행시키자.

 

예시

 

fun main() {
    for (i in 0..4) {
        println(i)
    }
}

 

출력

 

0
1
2
3
4

 

이 경우 증가값은 기본적으로 1이다. 그러나 증가값이 1이 아닌 다른 증가값을 가지기를 원하는 경우도 있을 것이다. 이 경우에는 step 연산자를 사용하면 된다.

 

예시

 

fun main() {
    for (i in 0..9 step 2) {
        println(i)
    }
}

 

출력

 

0
2
4
6
8

 

시작값부터 시작하여 2의 차이로 수가 늘어나기 때문에 9가 포함이 되지 않는다.

 

감소하며 반복하는 방법도 있다. 이 경우에는 ..이 아닌 downTo를 사용한다.

 

예시

 

fun main() {
    for (i in 4 downTo 0) {
        println(i)
    }
}

 

출력

 

4
3
2
1
0

 

아래와 같은 방식으로 이미 배열이 존재한다면 배열의 요소들을 순차적으로 0번째부터 n-1번째까지 참조하여 사용하는 방법도 있다.

 

예시

 

fun main() {
    var arr = arrayOf(1, 3, 5, 7, 9)
    for (i in arr) {
        println(i)
    }
}

 

출력

 

1
3
5
7
9

 

반복문의 종료

반복문의 종료는 break를 통해서 할 수 있다. break를 사용하면 해당 반복문의 반복이 즉시 종료되는데, 문제는 여러 반복문이 중첩으로 사용되었을 때이다. 가령 하나의 for loop 안에서 i 를 0부터 9까지 반복시키고 다른 하나의 for loop 안에서 j를 0부터 9까지 반복시키는데 만약 i가 3이고 j가 4일 때 모든 반복문을 즉시 종료시켜야 한다면, 안쪽에 있는 반복문을 먼저 종료시킨 후, 바깥쪽에 있는 반복문을 다른 조건문을 사용하여 종료시켜야 한다는 단점이 있다. 이로 인해 코드가 복잡해질 수 있는데, 코틀린에서는 반복문에 레이블을 추가함으로써 레이블이 달린 반복문을 기준으로 즉시 break를 할 수 있다. continue 또한 마찬가지로 적용시킬 수 있다.

 

예시

 

fun main() {
    loop1@for (i in 0..9) {
        for (j in 0..9) {
            println("$i,$j")
            if (i == 0 && j == 3) {
                break@loop1
            }
        }
    }
}

 

출력

 

0,0
0,1
0,2
0,3

 

 

 

출처

https://www.youtube.com/playlist?list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN