Scope Function
Scope Function(Kotlin)
스코프 함수(범위 함수)는 해당 객체의 맴버들을 참조 할 수 있다.
종류: apply, with, let, also, run
예시
- apply
보통의 경우 apply 함수는 객체의 초기화나 설정에 쓰이며 해당 객체를 반환.
// Example
val person = Person().apply{
firstName = "Ju"
lastName = "YongHan"
}
- also
위 apply와 비슷하게 사용되며 차이점은 T가 파라미터it을 통해 전달된다는 점이다. 마찬가지로 객체를 반환.
// Example_1
val person = Person().apply{
it.firstName = "Ju"
it.lastName = "YongHan"
}
// Example_2
// 생성한 객체를 이용해 print함수 실행, apply와 같이 it 반환
Random.nextInt(100).also{ value->
print( " random int= $value.")
}
- let
apply, also 두 함수와 달리 객체 자체를 반환하지 않고 let의 실행값을 반환한다.
또한 null safe 코드 작성을 위해 자주 사용 됨.
// Example
val number: Int?
// non-null type
val numberString: String!! = number?.let{
"I am String $number."
}.orEmpty()
- with
파라미터로 객체를 받으며 객체의 맴버에 접근 가능, 또한 람다식의 결과를 반환한다.
// Example
val person = Person()
// 확장 함수로 사용 불가! (person.with() X)
val firstNameStr = with(person){
work()
sleep()
print(age)
firstName
}
- run
객체를 활용한 계산이 필요할 때 사용됨. 결과를 반환 함.
// Example
// result = service.query() 반환
val result = service.run{
port = 8080
query()
}