Image
Kotlin/Variable and Function

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

목표

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

 

문(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는 같은 함수이다.

반응형

 

이 글의 저작권은 '조세영의 Kotlin World' 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.

 

 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com