본문 바로가기
Development/Kotlin

코틀린(Kotlin) 문법 뽀개기 - 3. 함수

by du.it.ddu 2020. 6. 14.
반응형

코틀린으로 함수를 작성 해 보자. 

기본적인 개념과 작성방법에 대해 간단하게 설명한다.


함수는 사실 굉장히 익숙한 단어다. (수학..)

쉽게 얘기하자면 f(x) = ax+b 와 같은 것이다.

프로그래밍에서 함수도 크게 차이가 없다. 그리고 이 포스팅을 하면서 이미 함수는 사용되고 있었다.

Hello Kotlin을 찍었던 코드를 다시 보자.

fun main() {
    println("Hello Kotlin!")
}

fun은 function(함수)를 의미하고, main은 그 함수의 이름이다. 그리고 main뒤의 ()는 매개변수가 들어갈 자리인데, 여기선 없다. 

그리고 println("Hello Kotlin!")이 함수의 내용이고 결과물이 된다.

그리고 println도 사실 함수다.


좀 더 이해하기 쉬운 직관적인 함수를 작성 해 보겠다.

fun f(x: Int): Int = x+1

fun main() {
    val y = f(2)
    println(y)
}

이렇게 작성하고 실행하면 3의 값이 출력 될 것이다.

f(x) = x+1 의 형태를 지닌 함수를 작성한 것이고, main 함수에서 x=2 가 되어 y=3 이 된 것이다.

다른 프로그래밍 언어를 했다면 조금 생소한 함수 표현일 수 있겠다. 익숙한 표현으로 바꾸면 아래와 같을 것이다.

fun f(x: Int): Int {
    return x + 1
}

이제 함수에 대해선 어느정도 이해를 했을 것이다. 이제 함수의 구성요소를 뜯어보자.

fun 함수명(매개변수명: 매개변수 타입, ...): 반환 타입 {
    /* 함수의 동작들 ... */
    
    return 반환할 함수의 결과
}

이해가 되리라 믿는다.

그럼 잠깐, main함수는 매개변수, 반환타입, 반환할 함수의 결과가 없다.

결론적으로 매개변수와 반환타입과 결과를 적어주지 않아도 된다.

다른 프로그래밍 언어에서는 이러한 형태를 void 함수라고 칭했을텐데, 코틀린은 아니다.

fun void() {
    
}

fun main() {
    println(void())
}

위와 같이 빈 함수를 작성하고 출력해보면, "kotlin.Unit" 이라는 문구가 출력 될 것이다.

그렇다. 코틀린은 기본적으로 Unit 이라는 타입이다.

아마 println 함수를 쓰다보면 IDE에서 아래와 같이 자동완성 목록을 보여 줄 것이다.

여기서 우측의 Unit이 함수들의 반환 타입이다.

즉, print 함수들은 message라는 이름의 매개변수를 받고 매개변수의 타입은 Int, Any?, Byte 등등 다양하며 반환형은 Unit이라는 것을 알 수 있다.


함수에 대한 기본적인 내용은 이 정도라고 생각한다.

개인적으로 프로그램은 함수로 시작해서 함수로 끝난다고 생각하고, 이 함수들의 조합으로 동작이 결정된다고 생각한다. 그래서 함수를 잘 작성하는 것이 프로그래머에게 큰 숙제가 아닐까.

기본적인 내용 뿐이지만 여러가지 함수를 작성해보면서 익숙해지도록 하자.

반응형