목표
- 문과 식을 구분한다.
- 문이 본문인 함수와 식이 본문인 함수의 차이를 안다.
문(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는 같은 함수이다.
반응형