본문 바로가기

카테고리 없음

let/apply

Scope 함수

kotlin의 Scope 함수는 객체를 사용할 때 Scope:범위를 일시적으로 만들어서 
property나 함수를 처리하는 용도로 사용되는 함수이다.

Scope 함수의 종류

  • let
  • with //사용해볼 때 알아보기
  • run  //사용해볼 때 알아보기
  • apply
  • also //사용해볼 때 알아보기

let

 

  • let은 타입 T의 확장 함수이다.
  • Null 체크 시에 자주 사용된다.
  • public inline fun <T, R> T.let(block: (T) -> R): R {
        contract {
            callsInPlace(block, InvocationKind.EXACTLY_ONCE)
        }
        return block(this)
    }
  • 자신을 매개변수로 받아서 결과값을 반환한다.

 

apply

  • apply는 T의 확장 함수이다.
  • 전달받은 객체의 초기화를 할 때 주로 사용한다.
  • public inline fun <T> T.apply(block: T.() -> Unit): T {
        contract {
            callsInPlace(block, InvocationKind.EXACTLY_ONCE)
        }
        block()
        return this
  • block 함수의 입력을 람다 리시버( T.() )로 받게 되면
  • 블록 안에서 객체의 프로퍼티를 호출할 때 it이나 this를 사용하지 않아도 된다.
  • 자신인 T를 반환한다.
//사용안햇을때
user.name = "jiwon"
user.age = 26

//apply사용
val user2 = User().apply {
    name = "jiwon"
    age = 26