코틀린 범위함수 정리

신정훈·2023년 3월 19일
0
post-thumbnail

scope함수의 종류와 설명

범위스코프 함수의 수신객체를 람다의 수신객체로 전달하는가 아니면 람다의 파라미터로 전달하느냐에 대한 차이

  1. apply는 수신객체를 람다의 수신객체로 전달합니다. 주로 수신객체의 속성값을 변경할때 사용하며 수신객체를 반환하게 됩니다.
  2. run은 apply와 동일하며 주로 수신객체를 통한 특정동작을 수행하고 결과를 리턴할때 사용합니다. 예를 들어 수신한 격체의 속성이 유효성을 판단하는 경우에 run을 사용합니다. 또한 수신객체 없이도 동작 가능한데 이경우 run안에 수신객체를 명시해줘야합니다.
  3. with는 run과 동일하게 동작하지만 다른점은 확장함수로 사용되지않고 명시적으로 수신객체를 파라미터로 받아서 사용한다. 실제로는 거의 사용되지않는다고합니다.
  4. let은 수신객체에 대한 작업을 한 후 결과를 리턴할때 사용합니다. 람다의 파라미터로 수신객체를 받기 때문에 it 또는 다른이름으로 수신객체를 전달받는다.
    또한 수신객체를 널 체크를 한뒤에 작업을 해야하는 경우 let을 사용하며 수신객체를 다른 타입으로 변경할때 사용합니다. 수신객체가 Nullable한 타입이 아닌 경우 run을 사용한다.
  5. also는 apply와 비슷하게 수신객체를 람다의 수신객체로 전달한다. 하지만 apply와는 다르게 속성 변경 이외에도 추가적인 다른 작업이 있는경우에 사용하는데 예를 들어 로깅, 유효성 검사등의 작업이 있다.
    작업의 결과는 항상 수신객체를 리턴한다.
profile
주니어 안드로이드 개발자

0개의 댓글