Functional Programming

Kotlin 함수 선언 방법

Binceline 2022. 5. 26. 19:30
fun f1(value: Int): Int {
	return value * 3
}

fun f2(value: Int): Int = value * 2

fun f3(value: Int) = value * 2

 

{} 블록으로 감싸면 타입 추론을 하지 않기 때문에 함수 반환 타입을 명시해야 한다.

명시하지 않으면 Unit(Void) 타입으로 설정된다.

 

그리고 Java와 다르게 함수 파라미터 기본값을 설정할 수 있다.

그리고 호출할 때 순서를 고려하지 않아도 된다. 다음과 같이 할 수 있다.

fun sum(x: Int = 10, y: Int = 5): Int = x + y

println(sum(y = 3)) // 13
println(sum(y = 8, x = 6)) // 14

 

익명 함수, 람다 표현식

람다식을 이용해 익명 함수를 간결하게 표현한다.

fun sum(x: Int, y: Int, calc: (Int, Int) -> Int): Int {
	return calc(x, y)
}

val value = sum(5, 10, { x, y -> x + y })

sum 함수 호출 시 넘겨준 람다식에서 x, y는 컴파일러가 타입 추론을 진행한다.

그리고 kotlin은 함수에서 return을 사용하지 않으면 마지막 라인의 결과를 반환한다.

 

확장 함수

상속이나 내부 수정 없이, 이미 작성된 클래스에 함수나 프로퍼티를 추가할 수 있다.

이 때 함수가 추가된 경우에, 이를 확장 함수라고 말한다.

fun Int.multiply(value: Int): Int {
	return this * value
}

println(10.multiply(4)) // 40

이렇게 모든 Int 타입에서 product 함수를 사용할 수 있게 된다.

별도 인자 없이 this를 이용해 자신의 값에 접근이 가능하다.

반응형

'Functional Programming' 카테고리의 다른 글

[Kotlin] Interface와 Class  (0) 2022.05.27
함수형 프로그래밍의 특징  (0) 2022.05.19