Study Record

[Kotlin] Scope Function 본문

안드로이드/Kotlin

[Kotlin] Scope Function

초코초코초코 2022. 4. 5. 22:14
728x90

Apply 함수

- 객체의 확장 함수이다.

- this를 통해 접근이 가능하다. ( this 생략 가능 )

- 외부에서 객체의 프로퍼티에 접근할 수 있다.

- 반환값이 자기 자신이 된다.

- 주로 객체를 초기화할 때 사용한다.

val person = Person().apply {
	firstName = "Fast"
   	lastName = "Campus"
}

 

Also 함수

- 객체가 파라미터로 전달된다.

- 객체가 변수에 할당되기도 전에 객체에서 호출할 수 있다.

- 람다의 입력값으로 오게 된다.

- 파라미터명을 생략하면 it으로 받는다.

- 객체의 유효성을 확인하거나 디버깅하는 용도로 사용된다.

Random.nextInt(100).also {
	print("value : $it")
}

Random.nextInt(100).also { value ->
	print("value : $value")
}

 

Let 함수

- null safe한 코드를 위해 사용된다.

val number: Int?

// sumNumber 에는 null 혹은 "${sum(10, it)}" 값이 들어간다.
val sumNumber = number?.let {
	"${sum(10, it)}"
}

// sumNumber 에는 "" 혹은 "${sum(10, it)}" 값이 들어간다.
val sumNumber = number?.let {
	"${sum(10, it)}"
}.orEmpty()

 

With 함수

- 객체로 반환할 수 있다.

val person = Person()

// 다음 peron의 함수들을 한꺼번에 실행한다.
with(person) {
	work()
	sleep()
}

 

Run 함수

- 객체 구성(초기화)과 결과 계산이 한꺼번에 있을 때 사용한다.

- 반환값이 람다의 결과값이다.

- this 를 사용한다.

// result = service.query() 값이 들어간다.
val result = service.run {
	port = 8080
	query()
}

 

 

 

 

Scope functions | Kotlin

 

kotlinlang.org

 

728x90

'안드로이드 > Kotlin' 카테고리의 다른 글

[Kotlin] 조건부  (0) 2023.07.03
[kotlin] 기본 용어 (변수, 함수, 주석, repeat())  (0) 2023.06.30
[Kotlin] Collection  (0) 2022.04.07
[Kotlin] Lambda, lateinit, lazy init  (0) 2022.04.05
[Kotlin] 기본 문법 훑어보기  (0) 2022.04.05