728x90
반응형
run let apply also
fun main(){
studyRun()
}
// 스코프 함수에 대해서 알아본다.
fun studyRun(){
val runResult = SeoulPeople().people.run {
add( People("runPack","010-3333-4444",21))
add( People("runJeon","010-4444-5555",22))
// 인스턴스가 유지되지 않는 일회성으로 사용할 때 유리
"I'm Run ~ "
}
val letResult = SeoulPeople().people.let { people -> // 알리아싱을 통해서 사용 기본은 it
people.add( People("letPack","010-3333-4444",21))
people.add( People("letJeon","010-4444-5555",22))
// 메소드 호출로 인스턴스 생성후 메소드로 이어나갈때 사용
"I'm Let ~ "
}
val applyResult = SeoulPeople().people.apply {
add( People("applyPack","010-3333-4444",21))
add( People("applyJeon","010-4444-5555",22))
// 사용법은 run과 동일
// 인스턴스가 유지되어서 재사용할때 유리
"I'm Apply ~ "
}
val alsoResult = SeoulPeople().people.also { people ->
people.add( People("alsoPack","010-3333-4444",21))
people.add( People("alsoJeon","010-4444-5555",22))
// 사용법은 let 과 동일
// 타깃 객체에서 계속 해서 무언가를 해나갈때 사용
"I'm Also ~ "
}
/*
* apply 와 also 는 전달 받은 컨텍스트 오브젝트를 반환한다. 여기서는 var people = mutableListOf<People>() 의 people를 반환.
* 내가 스코프 함수를 돌린 녀석을 반환한다.
* */
println("apply : $applyResult")
println("also : $alsoResult")
/*
* run 과 let은 마지막 값을 리턴한다.
* */
println("run : $runResult")
println("let : $letResult")
}
class SeoulPeople(){
var people = mutableListOf<People>()
init {
}
}
data class People (val name : String, var phone : String , var age : Int)
실행결과
apply : [People(name=applyPack, phone=010-3333-4444, age=21), People(name=applyJeon, phone=010-4444-5555, age=22)]
also : [People(name=alsoPack, phone=010-3333-4444, age=21), People(name=alsoJeon, phone=010-4444-5555, age=22)]
run : I'm Run ~
let : I'm Let ~
with
728x90
반응형
'Kotlin' 카테고리의 다른 글
코틀린 키해쉬 구하기 (0) | 2021.04.30 |
---|---|
1. Kotlin 버튼 사용 OnClickListener (0) | 2020.12.17 |
코틀린 fragment 내부에서 onActivityResult 받기 (0) | 2019.04.25 |
코틀린 프래그먼트, 뷰페이저 프래그먼트 갱신 (0) | 2019.04.25 |
코틀린 라디오그룹 RadioGroup (0) | 2019.04.19 |