[kotlin] scope function?

나호영·2023년 3월 25일

스코프 함수란 객체 콘텍스트 내에서 속성 초기화나 활용과 같은 특정 동작을 수행하기 위한 목적을 가진 함수이다. 람다 표현식을 사용하여 스코프 함수를 호출하면 임시 스코프가 활성화 되는데 이 때 해당 스코프 내에서는 객체의 이름으로 일일이 참조할 필요 없이 객체를 access하고 handle할 수 있다.

다음과 같은 5가지 scope function이 존재한다.

  • apply
    인스턴스를 생성하고 변수에 할당하기 전에 초기화 작업을 해주는 스코프를 형성
    apply 함수에서 모든 명령이 수행되면 명령들이 적용된 새로운 인스턴스를 반환함.
  • run
    apply와 다르게 인스턴스를 반환하는 것이 아니라 스코프 내부에서 명령 실행 결과 값을 반환
    이미 생성된 인스턴스를 활용한 특정 계산 결과값을 필요로 하는 경우 사용함.(인스턴스 프로퍼티 출력등의 핸들링)
  • with
    run과 똑같다. 다만 사용하는 방식이 다름. run은 function with reciever, with은 아님
    A.run { ... } <-> with(A) { ... }
  • also
    apply와 마찬가지로 생성된 인스턴스를 반환
    하지만, it 키워드 제공함. -> 동명의 변수 참조 방지
  • let
    run과 마찬가지로 최종 실행 결과를 반환
    하지만, it 키워드 제공함. -> 동명의 변수 참조 방지

also/let은 apply/run과 다르게 it 키워드를 제공하여 특정 객체 컨텍스트 내부에서 특정 동작을 실행하게 한다.

profile
공부 내용 기록

0개의 댓글