Kotlin의 다양한 함수 사용법
코틀린은 개발자의 편의를 위해 다양한 함수를 제공한다. 이번 포스트에서는 확장 함수, 멤버 함수, 인픽스 함수, 인라인 함수, 지역 함수 등 코틀린의 다양한 함수 사용법에 대해 알아볼 거다.
확장함수
확장 함수는 기존 클래스에 새로운 함수를 추가할 수 있는 기능이다.
이 함수는 클래스 밖에서 정의되지만, 클래스의 메서드처럼 사용할 수 있다.
단, 확장 함수는 원본 클래스의 private 또는 protected 멤버에 접근할 수 없다.
fun String.lastChar(): Char = this[this.length - 1]
위 예시는 String 클래스에 lastChar라는 확장 함수를 추가하는 방법을 보여준다.
이 함수는 문자열의 마지막 문자를 반환한다.
멤버함수 vs 확장함수
멤버 함수와 확장 함수가 동일한 시그니처를 가질 경우, 멤버 함수가 우선적으로 호출된다.
확장 함수는 해당 타입의 인스턴스에서만 호출할 수 있다.
class Example {
fun print() = println("멤버 함수")
}
fun Example.print() = println("확장 함수")
fun main() {
val example = Example()
example.print() // "멤버 함수" 출력
}
확장 프로퍼티
확장 함수와 마찬가지로, 확장 프로퍼티를 사용하여 클래스에 새로운 프로퍼티를 추가할 수 있다.
이는 custom getter를 포함한 확장 함수와 유사하다.
val String.lastChar: Char
get() = this[length - 1]
Infix 함수
인픽스 함수는 함수 호출 시 사용하는 새로운 방법을 제공한다. 이를 통해 코드를 더 읽기 쉽게 만들 수 있다.
infix fun Int.add(other: Int): Int = this + other
fun main() {
val result = 1 add 2 // 인픽스 함수 호출
println(result) // 3 출력
}
Inline 함수
인라인 함수는 함수가 호출되는 대신 해당 위치에 함수 본문이 복사되는 함수다.
이는 성능 측정과 함꼐 신중하게 사용되어야 한다.
inline fun inlineFunction(block: () -> Unit) {
println("Before block")
block()
println("After block")
}
지역함수
함수 내부에 다른 함수를 정의하는 것을 지역 함수라고 한다. 이를 통해 코드의 가독성을 높일 수 있다.
fun outerFunction() {
fun localFunction() = println("지역 함수")
localFunction()
}
이상으로 코틀린에서 다양한 함수를 다루는 방법에 대해 알아봤다. 확장 함수, 인픽스 함수, 인라인 함수 등을 적절히 활용하면 코드의 가독성과 유지보수성을 크게 향상시킬 수 있다.