[코틀린(Kotlin) - 2일차 1/?] 코틀린의 특징 - 함수
프로그래밍/코틀린(Kotlin)

[코틀린(Kotlin) - 2일차 1/?] 코틀린의 특징 - 함수

2장에서는 코틀린의 특징에 대해 간략하게 살펴본다. 살펴보는 내용은 아래와 같다.

  • 함수, 변수, 클래스, enum, 프로퍼티
  • 제어 구조
  • 스마트 캐스트
  • 예외 던지기와 예외 잡기

 

함수

코틀린에서 함수를 선언하기 위해서는 fun을 이용한다.

fun add(a: Int, b: Int) : Int {
    return a + b
}

함수의 구조는 아래와 같다.

코틀린에서 함수의 구조

return은 반드시 쓸 필요는 없다. 예를 들어 아래와 같이 단순히 입력받은 값을 출력하는 경우 반환타입과 return은 생략될 수 있다.

 

fun printAdd(a:Int, b:Int) {
    println("$a + $b")
}

위 코드는 a, b두 가지 값을 받아 어떤 값을 더하는지를 println문으로 출력하는 함수이다. $a, $b는 문자열 탬플릿이라 하는데 뒤에서 다루도록 하겠다.

 

코틀린에서 함수는 두 가지 형태가 존재한다.

  • 블록이 본문인 함수
  • 식이 본문인 함수

두 가지 명칭을 외울 필요는 없지만, 두 형태의 함수를 모두 알아두면 더 깔끔한 코딩이 가능할 것이다. 블록이 본문인 함수는 위에서 본 예제와 같은 형태의 함수 형태이다.

블록이 본문인 함수의 형태

중괄호({, }) 사이에 함수의 기능을 정의하는 것을 블록이 본문인 함수라 한다.

 

식이 본문인 함수는 더 간단한 형태를 갖는다.

식이 본문인 함수의 형태

식이 본문인 함수는 = 뒤에 함수의 기능을 정의하면 된다. 코틀린에서는 식이 본문인 함수가 유용한데, 이는 코틀린에서 산술식, 함수 호출식, if, when, try 등이 다 식의 형태를 갖기 때문이다.

 

여기서 식(expression)이란, 문(statement)과 대비되는데 다음과 같다.

식은 값을 만들어 내며 다른 식의 하위 요소로 계산에 참여할 수 있는 반면 문은 자신을 둘러싸고 있는 가장 안쪽 블록의 최상위 요소로 존재하며 아무런 값을 만들어내지 않는다는 차이가 있다.

 

주목할 점은 식은 값을 만들어낸다(반환한다)는 것으로, return문을 사용하지 않고도 식 자체로 하나의 함수의 기능을 할 수 있다.

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

앞서 본 a, b두 가지 값을 받아 더하는 함수를 식이 본문인 함수 형태로 정의해 보았다. 

식이 본문인 함수는 반환 타입을 생략할 수 있는데, 이는 타입 추론에 의해 어떤 값이 반환될지 알 수 있기 때문이다.

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

주의할 점은 블록이 본문인 함수에서는 생략할 수 없다.

 

 

요약

  • 함수는 fun으로 정의한다
  • 블록이 본문인 함수와 식이 본문인 함수가 존재한다

블록이 본문인 함수의 형태
식이 본문인 함수의 형태

 

 

이 글은 Kotilin in action을 참고하여 작성하였습니다.

Kotlin in Action
국내도서
저자 : 드미트리 제메로프(Dmitry Jemerov),스베트라나 이사코바(Svetlana Isakova) / 오현석역
출판 : 에이콘출판사 2017.10.31
상세보기