[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