1. 코틀린 스코프 함수 소개
- 스코프 함수(Scope functions)는 객체의 컨텍스트 내에서 코드 블록을 실행하기 위한 목적으로 존재하는 함수입니다.
- 이 함수들을 사용하면 객체의 이름을 반복하지 않고도 그 객체에 대해 여러 연산을 수행할 수 있습니다.
- 코틀린 표준 라이브러리는 다섯 가지 스코프 함수를 제공합니다:
with,apply,let,also,run - 이 함수들은 모두 람다식을 인자로 받고, 객체를 컨텍스트로 하여 특정 스코프에서 코드 블록을 실행합니다.
2. 스코프 함수의 공통점과 차이점
2.1 스코프 함수의 공통점
- 모든 스코프 함수는 코드 블록을 실행하기 위한 임시 스코프를 형성합니다.
- 이 스코프 내에서는 객체 이름을 사용하지 않고도 객체에 접근할 수 있습니다.
- 스코프 함수를 사용하면 코드의 가독성과 간결성이 향상됩니다.
2.2 스코프 함수의 차이점
스코프 함수들은 다음 세 가지 특성에 따라 구분됩니다:
- 수신 객체 지정 방식:
- 수신 객체를 람다의 수신자(
this)로 제공:with,apply,run - 수신 객체를 람다의 인자(
it)로 제공:let,also
- 수신 객체를 람다의 수신자(
- 반환 값:
- 컨텍스트 객체 반환:
apply,also - 람다 결과 반환:
with,let,run
- 컨텍스트 객체 반환:
- 확장 함수 여부:
- 확장 함수로 호출:
apply,let,also,run - 일반 함수로 호출:
with
- 확장 함수로 호출:
다음 표는 이러한 차이점을 요약합니다:
| 함수 | 수신 객체 참조 | 반환 값 | 확장 함수 여부 |
|---|---|---|---|
| with | this | 람다 결과 | 일반 함수 |
| apply | this | 컨텍스트 객체 | 확장 함수 |
| run | this |