코틀린 표준 라이브러리에서 제공하는 확장함수
//1. let
val a = 3
a.let { }
val user = User("정지수", 10, true)
val age = user?.let {
user.age
}
println(age)
수신 객체를 통해서 확장함수를 사용할 수 있고 로컬 변수를 명시적으로 사용할 수 있다.
//2. run
//수신 객체.run { this ->
//
// 마지막 줄
//}
val kid = User("아이", 4, false)
val kidAge = kid.run{
this.age
}
let
과의 차이는 로컬 변수를 사용하지 못하고 this
를 사용해야한다는 것. this
는 생략가능하다.
return 값은 람다 리턴식이다.
//3. apply
//수신 객체.apply {
//ㅇㄹㅇㄴㄹㄴㅇㄹ
// 마지막 줄
//}
val kidName = kid.apply{
name
}
println(kidName)
apply
의 특징은 return 값이 수신객체 자기 자신이라는 것이다.
this로 리턴 값을 받을 수 있다.
그래서 출력값이 com.example.kotlin.User@34ce8af7
이다.
주로 수신객체를 초기화할 떄 사용한다.
//4. also
//수신객체.alse{ it -> //local variable로 사용 가능
//
//
//}
val male = User("민수",17, false, true)
val maleValue = male.also {
it.name
}
println(maleValue)
also
도 return 값이 수신객체 자기 자신이다.
apply
와 차이점은 로컬변수로 명시해서 사용가능하다는 점.
수신객체의 내용을 확인하고 싶을 때, 로그를 찍을 때 주로 사용하는 함수이다.
with
는 확장함수는 아니다.
//5. with
//with(수신객체){
//---
//마지막
//}
val result = with(male){
hasGlasses = false
true
}
with
의 ()안에 수신객체를 넣어서 접근한다. this
로 접근한다(생략가능).