코틀린은 람다식(lambda expression)과 고차 함수(higher-order function)를 지원하여 코드를 더 유연하고 간결하게 작성할 수 있습니다. 또한, 확장 함수(extension function)를 사용하여 기존 클래스에 새로운 함수를 추가할 수 있습니다. 이번 글에서는 코틀린의 확장 함수를 이용하여 람다식과 고차 함수의 유연성을 높이는 방법을 알아보겠습니다.
람다식과 고차 함수 소개
람다식은 간단한 익명함수로, 함수를 따로 정의하지 않고도 코드 블록을 사용해 표현할 수 있습니다. 고차 함수는 다른 함수를 매개변수로 받거나 반환하는 함수를 말합니다. 람다식과 고차 함수를 사용하면 코드를 좀 더 간결하게 표현할 수 있으며, 함수형 프로그래밍의 장점을 살릴 수 있습니다.
코틀린의 확장 함수
코틀린의 확장 함수를 사용하면 기존 클래스에 새로운 함수를 추가할 수 있습니다. 이를 통해 라이브러리 함수를 수정하지 않고도 원하는 기능을 추가할 수 있어 유용합니다.
다음은 간단한 문자열 클래스에 toTitleCase 확장 함수를 추가하는 예제입니다.
fun String.toTitleCase(): String {
return this.split(" ").joinToString(" ") { it.capitalize() }
}
위의 예제에서는 String 클래스에 toTitleCase 함수를 추가하였습니다. 이제 어떤 String 객체에서도 toTitleCase 함수를 호출하여 문자열을 타이틀 케이스로 변환할 수 있습니다.
확장 함수와 람다식, 고차 함수의 함께 사용하기
이제, 코틀린의 확장 함수를 이용하여 람다식과 고차 함수의 유연성을 높이는 방법을 알아보겠습니다.
fun List<String>.filterAndPrint(predicate: (String) -> Boolean) {
this.filter(predicate).forEach { println(it) }
}
val names = listOf("Alice", "Bob", "Charlie", "David")
// 확장 함수를 이용하여 람다식을 인자로 전달
names.filterAndPrint { it.startsWith("A") }
// 확장 함수를 이용하여 고차 함수를 인자로 전달
names.filterAndPrint { it.length > 4 }
위의 예제에서는 List
확장 함수를 이용하여 람다식과 고차 함수를 함께 사용함으로써 코드를 더 유연하게 작성할 수 있습니다.
결론
코틀린의 확장 함수는 람다식과 고차 함수와 함께 사용하여 코드의 유연성을 높일 수 있는 강력한 도구입니다. 이를 통해 코드를 간결하게 작성하고, 함수형 프로그래밍의 장점을 살릴 수 있습니다.
더불어, 확장 함수는 기존 라이브러리를 수정하지 않고도 새로운 기능을 추가할 수 있어 매우 유용합니다. 이러한 성질을 이용하여 코틀린의 확장 함수와 람다식, 고차 함수를 적절히 활용하여 더 나은 코드를 작성하는데 도움이 될 것입니다.
참고 자료
```