[Kotlin] Scope function - let

해니·2024년 9월 6일

Kotlin

목록 보기
4/9
post-thumbnail

Scope function

  • 코틀린은 기본적으로 표준 스코프 함수를 제공한다.
  • 특정 객체의 컨텍스트 내에서 특정 동작 (프로퍼티 초기화, 활용 등)을 실행하기 위한 목적만을 가진 함수
  • 스코프 함수를 람다 함수로 사용하게 되면 임시로 스코프를 형성한다.
    • 이 스코프 내에서는 객체의 이름을 통해 일일히 참조할 필요 없이 객체를 접근하고 핸들링할 수 있다는 편리하다
  • 코틀린이 제공하는 스코프 함수에는 apply, run, with, alse, let 이 있다.



let

  • 참조: it
  • 반환값: Lambda result

📘 this와 it의 차이점
[this]

  • 람다 함수의 Receiver 객체를 참조 ( T.() -> R )
  • 프로퍼티 접근 시 생략 가능
  • 코드 블록 내에서 외부 변수 혼용 시, 키워드 생략으로 인해 무엇이 멤버고 외부 변수인지 혼란스러울 수 있음
    [it]
  • 람다 함수의 Argument로 들어온 객체를 참조 ((T) -> R)
  • this와 달리, 외부 변수와 명확하게 구분됨

null 체크

nums?.let {
  nums.length == 0
}
  • let의 주 용도라고 볼 수 있는 케이스
  • if문 없이 간결하게 null 체크가 가능하다.
  • null이 아닌 값들로만 코드 블럭을 실행시키고 싶을 때 사용한다.
  • let을 사용해 null 체크하는 경우, IDE에서 non-null 타입으로 인식한다. (IntelliJ-based IDE 기준)



변수 체이닝 단축

school.classroom.students.let {
	it.get(0).friend.age += 1
   	it.length == 1
    it.get(0).age += 1
}
  • 접근해야 하는 프로퍼티의 depth가 너무 깊은 경우, 별도 변수 선언 없이 let으로 단축할 수 있다.



임시적으로 필요한 변수 생성

something().let { tmp ->
	...
}
  • 메소드 분리 없이도, 임시적으로 필요한 변수의 생명주기를 정할 수 있다.






출처
[Kotlin] Scope function (let, run, with, apply, also) 정리
[Kotlin] 언제 뭘 써야 돼? 헷갈리는 스코프 함수 한 방 정리
Kotlin :: Scope 함수, 가독성 있게 쓰는 법

profile
💻 ⚾️ 🐻 이전했어요..! ➡️ https://dev-haeni.tistory.com/

0개의 댓글