Hello, Android!
Scope Function with 본문
코틀린에서는 모든 객체에 범위(Scope)함수를 기본적으로 제공한다
이는 객체를 사용할때 해당 범위 내에서는 별도의 이름 없이 객체에 접근이 가능하다
범위 지정 함수로는 apply, with, let, also, run이 있다
이들은 공통적으로
- 수신 객체
- 수신 객체 지정 람다
이 두가지 구성 요소를 가진다
- with
whit함수의 원형을 살펴보면, 지금까지의 함수들과는 다르게 객체, 람다식 두개의 매개변수를 받으며
람다식의 결과를 함수의 결과로 반환한다
이는 run함수와 기능이 유사한데 with는 run과는 달리 recicer 즉 객체를 직접 매개변수로 받기 때문에
객체의 위치가 달라진다
또한 with함수는 세이프티콜(?.)을 지원하지 않기 때문에, let함수와 함께 사용하기도 한다
이렇게 let과 with를 사용하여 null에 대하여 안전하게 대비하지만
이는 run을 사용하면 더욱 간단하게 해결된다
이렇게 with는 null에 대한 처리를 별도로 해야하기 때문에 null이 아닌것이
확실한 경우에 사용하는것이 좋다
with에 넘겨주는 객체로는 friends와 람다식을 넘겨주었다
apply에서처럼 with도 this는 생략이 가능하다
람다식 에서는 받아온 객체에 대하여 name, age의 값을 변경하고
마지막 표현식으로는 새로운 Friends의 객체를 만들어 반환하였다
첫번째 print에서는 람다식에서 변경한 Muzi, 4가 출력이 되고
두번째 print에서는 람다식에서 반환한 객체인 con, 3이 출력된다
- 정리 : with는 절대 null이 아닌 객체에 대하여 결과가 필요하지 않는 경우에 사용하자
'Kotlin' 카테고리의 다른 글
takeif() takeUnless() (0) | 2020.08.08 |
---|---|
use함수 (0) | 2020.08.02 |
Scope Function run (0) | 2020.07.26 |
Scope Function apply (0) | 2020.07.26 |
Scope Function also (0) | 2020.07.25 |