🫷들어가기 전
필자는 이런 스코프 함수들이 많이 쓰인다는 건 알고 있었는데 생각해보니까 무엇을 의미하고 어떻게 사용하는지 모르겠었다. 그냥 이런 기능들이 존재하구나 정도로만 생각했었는데 막상 Kotlin을 배우다보니까 알고 있어야 두구두구 잘 사용할 것 같아 포스팅해본다.
💁 스코프 함수란?
스코프 함수는 특정 객체 내에서 특정 동작(프로퍼티 초기화, 활용 등)을 실행하기 위한 목적만 가진 함수이다.
스코프 내에서는 객체의 이름을 통해 일일히 참조할 필요 없이 객체에 접근하고 핸들링할 수 있다. Kotlin에서 제공해주는 스코프 함수는 총 5가지로 apply, run, with, also, let이 있다. 하나하나 살펴보자.
1. apply
인스턴스를 새로 생성하고 특정 변수에 할당하기 전 초기화 작업을 해줄 수 있게 만들어준다.
apply는 스코프 내에 동작들을 수행한 코드들이 적용되어 새로운 인스턴스를 반환한다.
2. run
run은 apply와 전혀 다르다. run은 인스턴스를 반환하는 것이 아닌 스코프 내의 명령어 실행 결과값을 반환한다.
이미 만들어진 인스턴스의 값에 특정 계산을 하고 싶을 때 사용한다.
스코프 내부에 마지막 명령어가 반환값이다.
3. with
with은 run과 사용방법은 다르지만 스코프 내의 특정 결과값을 반환한다는 건 똑같다.
파라미터 형태로 스코프 함수를 열게 된다.
4. also / let
also와 let은 it 키워드를 사용하여 해당 객체에 접근한다는 공통점이 존재한다.
also는 인스턴스를 반환하고, let은 스코프 내의 결과값을 반환한다는 차이점도 존재한다. 그냥 also는 it 키워드를 사용한 apply라고 보면 되고, let은 it 키워드를 사용한 run, with이라고 생각하면 된다.
it 키워드를 통해서 해당 객체의 프로퍼티나 함수에 접근할 수 있다.
it은 해당 객체를 식별한다고 이해해도 좋다. let도 run과 마찬가지로 스코프 내의 마지막 명령어가 결과값(반환값)이다.
잘못된 내용이나 부족한 부분이 있을 수 있습니다. 댓글로 남겨주시면 감사하겠습니다. 😊
'Kotlin' 카테고리의 다른 글
[Kotlin] Sealed Class란? (0) | 2024.12.05 |
---|---|
[Kotlin] 싱글톤 패턴(Singleton Pattern), @JvmStatic, Object Class (0) | 2024.12.05 |
[Kotlin] 초기화(initialize), get() / set(), 열거형 클래스(Enum Class) (0) | 2024.12.04 |
[Kotlin] 클래스(Class), 데이터 클래스(Data Class) (4) | 2024.12.04 |
[Kotlin] 객체 지향 프로그래밍(OOP) (0) | 2024.12.03 |