코틀린 & Java/코틀린인액션

[Kotlin] 스코프 펑션(Scoepe Function)

코딩하는후운 2023. 3. 23. 17:33
반응형

스코프 펑션(Scoepe Function)


선택기준

  • 스콥펑션은 크게 두가지 기준으로 나눈다.
  • Context Object를 참조하는 방법 (this, it)
  • Return value

let

  • 객체 결과값에 하나 이상의 함수를 호출하는 경우 사용
  • 긴 변수명 대신 it 으로 받을수 있다는 장점이 있음. 다만 이경우 run 이 더 좋을수 있음
  • nullable 한 객체에 대해서 unpack 할수 있어 safety call 을 할수 있음

run

  • let과 유사하나 this 로 받는다는 점이 다르다.
  • this 로 받기때문에 context object 를 생략가능해서 간결해진다.
  • let 과 마찬가지로 nullable 객체에 대한 safety call 할수 있다.

with

  • run 처럼 this 로 받는다.
  • run 처럼 safety call 할수 없어 많이 사용하지 않는다.

apply, also

  • apply, also 가 컨텍스트 오브젝트를 리턴
  • 따라서 체인형식으로 계속해서 연결해 쓸수 있다.
  • also 같은 경우는 체인 중간에 로그같은것을 찍기 좋다.
  • apply 는 최초 객체생성과 동시에 여러 초기 작업을 수행할때 좋다.

 

let vs run

  • 둘다 널체크하면서 특정 작업을 수행하기에 좋다.
  • let 은 it 으로 받거나 특정 이름으로 받을수 있으므로, 내부적으로 객체값을 구분하면서 특정 작업을 연속적으로 호출한다거나 할때 run 보다 나은점이 있다.
  • run 은 this 로 받아 생략가능하기 때문에, 람다블럭 내부에서 컨텍스트 오브젝트가 무엇인지 표시 하지 않아도 되는(명확한 경우) 사용하기 좋다.

아래 경우를 보면 run 보다는 let 이 훨씬 나은 선택일 것이다.

 

반응형