5. with
- 일반 함수로 사용 (인자가 필요함)
- 인자로 받는 객체를 블록의 리시버로 전달
- 블록의 마지막 줄을 반환
<예제>
var person : Person = Person("david", "male", "game")
var p : Person = with(person) {
println("with01")
printInfo(this);
hobby = "walk"
Person("hannah", "female", "swim")
}
println("with02")
printInfo(p)
<결과>
with01
printInfo ::
name -> david
hobby -> game
sex -> male
with02
//마지막 줄을 반환하였기 때문에 david가 아닌 hannah가 나옴
printInfo ::
name -> hannah
hobby -> swim
sex -> female
- 세이프 콜을 지원하지 않기 때문에 NPE에 주의하여야 함 (let과 함께 사용하여 문제를 해결할 수 있음)
person?.let {
with(it) {
...
}
}
그리고 이를 run()함수를 이용하여 사용할 수 있음
person?.run() {
...
}
'개발 > Kotlin' 카테고리의 다른 글
코틀린 공부 - 함수 (5) 함수를 인자로 넘기는 다양한 방법 (0) | 2021.08.03 |
---|---|
코틀린 공부 - 함수 (4) let, run, also, apply, with의 차이 정리 (0) | 2021.08.03 |
코틀린 공부 - 함수 (4) also, apply (0) | 2021.08.03 |
코틀린 공부 - 함수(4) - let / run (0) | 2021.08.03 |
코틀린 공부 - 함수(3) (0) | 2021.08.02 |