Glacier's Daily Log

코틀린 스코프 함수 알아보기 (Kotlin Scope Function - let, run, with, apply, 그리고 also) 본문

Coding/Android

코틀린 스코프 함수 알아보기 (Kotlin Scope Function - let, run, with, apply, 그리고 also)

h__glacier_ 2023. 7. 8. 16:24
반응형

 안드로이드 개발을 시작한지 3년이 다 되어간다.

쌩독학으로 시작해서, 유튜브 구글링 등으로 원하는 앱을 만들어보며 직접 부딪혔다.

그렇게 한두개씩 개인 앱 프로젝트를 만들다 보니, 어느새 내 플레이스토어 개발자 계정에는 40개 이상의 앱이 올라가 있었고

많은 외주작업을 맡을 수 있는 프리랜서 개발자로도 활동하고 있다.

 

Google Play의 Glacier Han 개발자 Android 앱

안녕하세요, 1인 안드로이드 어플 개발자 Glacier Han 입니다. 약 40개의 안드로이드 앱을 개발 하였으며, 다양한 플랫폼에서 운영중입니다. 앱개발 멘토링 / 앱 외주개발 등도 진행중에 있습니다.

play.google.com

 

처음에는 JAVA로 앱 개발을 배웠다. 약 2년동안 자바로 안드로이드를 하다가, 아무래도 추세는 코틀린으로 넘어간지 오래라,, 힘들지만 코틀린으로의 전환을 시작했다.

 코틀린을 사용한지 약 반년이 다 되어가는 지금, 이제 자바 코드는 보기 싫을정도로 코틀린에 적응해버렸다.

 오늘은, 코틀린에서 사랑하는 문법 중 하나인 스코프 함수에 대해서 한번 정리해보는 시간을 가져보려 한다.


Kotlin Scope 함수란?

특정 객체의 컨텍스트 안에서 특정 동작을 수행하기 위한 목적을 가진 함수

스코프 함수를 람다형식으로 생성하면 스코프를 생성하는데, 해당 스코프 안에서는 객체의 이름을 참조할 필요없이 객체에 바로 접근하여 모든 메소드나 멤버를 사용할 수 있게 된다.

 

Scope 함수를 사용하면 좋은 점?

  • 코드 가독성 향상 -> 스코프 함수를 사용하면 객체관련 코드를 훨씬 간결하고 가독성이 좋게 작성할 수 있다. 스코프 내에서 모든 객체 관련 처리를 진행하므로 불필요한 객체명 반복을 막을 수 있음.
  • Nullable 객체 처리 -> let 함수를 사용하여 널 객체를 안전하게 처리 가능. null이 아닌 경우에만 코드블록에 접근하여 실행함으로 NPE를 사전에 막을 수 있음
  • 객체 초기화 -> apply 함수는 객체 초기화에 유용하게 사용할 수 있다. 객체 생성 후 다양한 속성을 설정하는 과정을 간결하게 표현 가능.
  • 코드 범위 제한 -> 스코프 내에서 변수는 외부와 인터렉션 하지 않으며 코드를 안전하게 작성 가능.

Scope 함수의 종류 및 사용예

  1. let: 주로 Nullable 객체를 안전하게 처리하는데 사용.
  2. run: 반환하는 값이 스코프 내에서 처리된 결과값. 특정 객체의 속성을 출력하는 데 주로 사용. ?로 null-check 가능
  3. with: run과 거의 동일하나 파라미터 형태로 스코프를 연다.
  4. apply: 반환 결과가 객체 자신. 객체 생성 후 속성들을 설정하는 데 사용. 스코프 내 모든 명령이 수행 된 후 해당 객체 반환
  5. also: apply와 동일하게 생성된 객체를 반환. 객체의 속성을 수정하지 않을때 유용. it을 사용하여 속성에 접근할 수 있음

정리

- 객체 접근법

 - this로 컨텍스트 객체에 접근 -> run, with, apply

 - it으로 컨텍스트 객체에 접근 -> also, let

 

- 반환값

 - apply, also는 참조한 객체 반환

 - let, run, with는 람다식 결과 반환

 

 

 

 

반응형
Comments