[kotlin] 스코프 함수와 확장 함수의 차이점
Kotlin에서는 스코프 함수와 확장 함수를 사용하여 객체의 범위를 정의하고 연산을 수행 할 수 있습니다.
스코프 함수
스코프 함수는 수신 객체(this)에 대해 동작을 수행하고 결과를 반환합니다. Kotlin에서 제공하는 주요 스코프 함수로는 let, run, with, apply, also가 있습니다.
예시
val result = "Hello, World".let {
it.length
}
이 예시에서 let 함수는 문자열 수신 객체에 대해 length를 호출하고 이 값을 result에 반환합니다.
확장 함수
확장 함수는 기존 클래스에 새로운 함수를 추가 할 수 있는 기능을 제공합니다. 확장 함수를 사용하면 외부 라이브러리나 기존의 코드를 수정하지 않고도 새로운 함수를 추가할 수 있습니다.
예시
fun String.isPhoneNumber(): Boolean {
return this.matches(Regex("\\d{3}-\\d{3}-\\d{4}"))
}
위의 예시에서 isPhoneNumber 확장 함수는 String 클래스에 추가되어 문자열을 전화번호 형식으로 유효성을 검사합니다.
차이점
- 범위: 스코프 함수는 수신 객체의 범위를 지정하는데 사용되며, 확장 함수는 기존 클래스의 메서드를 확장하여 새로운 동작을 추가합니다.
- 호출 방식: 스코프 함수는 수신 객체에 대한 동작을 수행하고 결과를 반환하는 방식으로 호출되고, 확장 함수는 확장하려는 클래스의 이름 뒤에
.을 붙여 호출됩니다.
이러한 차이점들을 고려하여 상황에 맞게 스코프 함수와 확장 함수를 적절히 활용할 수 있습니다.
결론
스코프 함수와 확장 함수는 Kotlin에서 객체의 범위를 지정하거나 기존 클래스를 확장하여 새로운 함수를 추가하는데 사용됩니다. 각각의 특징에 맞게 적재적소에 활용할 수 있도록 익히고 활용할 수 있으면 코드의 가독성과 유지보수성을 높일 수 있습니다.
참고문헌:
- https://kotlinlang.org/docs/scope-functions.html
- https://kotlinlang.org/docs/extensions.html