Kotlin/Variable and Function

Kotlin 블록(문)이 본문인 함수와 식이 본문인 함수

Dev.Cho 2021. 3. 29. 00:56

목표

  • 문과 식을 구분한다.
  • 문이 본문인 함수와 식이 본문인 함수의 차이를 안다.

 

문(Statement)과 식(Expression)의 구분

식은 자바에서는 볼 수 없었던 코틀린의 특성이다. 자바의 함수는 문으로 이루어져 있으며, return이라는 키워드를 통해서만 값을 반환할 수 있었다. 문과 식의 차이를 살펴보자.

문(Statement) : 자신을 둘러싼 가장 안쪽 블록의 최상위 요소로 존재하며, 아무런 값을 만들어내지 않는다.
식(Expression) : 값을 만들어 내며, 다른 식의 하위 요소로 계산에 참여한다. 

*코틀린에서는 루프를 제외한 대부분의 제어 구조가 식이다.

 

블록(문)이 본문인 함수

본문이 중괄호 {} 로 둘러싸인 함수를 문이 블록이 본문인 함수라 부른다.

특징

  • 블록이 본문인 함수는 타입 추론이 불가하다.
  • 타입 추론이 불가능하므로 반환 타입을 생략할 수 없다.
  • return 키워드 뒤에 반환할 값을 명시해주어야 한다.

<예시 1> 블록이 본문인 함수

fun argumentsToArray(vararg strings: String): Array<String> {
    return arrayOf(*strings)
}

 

식이 본문인 함수

등호와 식으로 이루어진 함수를 식이 본문인 함수로 부른다.

특징

  • 컴파일러가 식을 분석할 수 있어 타입 추론이 가능하다.
  • 타입 추론이 가능하므로 반환 타입 생략이 가능하다.
  • 마지막에 나온 값이 return 값이 된다. 별도 키워드 명시가 필요없다.

<예시 2> 식이 본문인 함수

<예시1> 과 비교했을 때 반환타입 Array<String>이 생략되었으며, 식의 마지막 부분이 return값이 되므로 return 키워드도 생략되었다.

fun argumentsToArray(vararg strings: String) = arrayOf(*strings)

 

예시1과 예시2는 같은 함수이다.

반응형