반응형

예전에 코틀린을 공부하면서 이전에 자바로 만든 앱을 코틀린으로 변환하는 작업을 했었는데 이때 코틀린의 코드가 훨씬 깔끔하다고 느꼈던 부분이 바로 이 범위 지정 함수의 존재였다.

범위 지정함수는 apply, with, let, also, run 총 5개가 있는데 전부 사용법이 비슷하게 생겨서 용도가 헷갈릴 때가 많다.

이와 관련해서 좋은 글을 발견해서 주소를 남기고 요약만 하겠다.

https://medium.com/@limgyumin/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%9D%98-apply-with-let-also-run-%EC%9D%80-%EC%96%B8%EC%A0%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80-4a517292df29

 

코틀린 의 apply, with, let, also, run 은 언제 사용하는가?

원문 : “Kotlin Scoping Functions apply vs. with, let, also, and run”

medium.com

땅땅땅!! 이것만 두고두고 참고하면 된다.

apply: 람다 내부에서 this로 객체를 사용하고 객체를 반환

람다 내부에서 객체의 함수를 사용하지 않고(프로퍼티만 사용) 자기 자신을 다시 반환하려는 경우에 사용한다. 대표적인 경우로 객체의 초기화가 있다.

also: 람다 내부에서 it으로 객체를 사용하고 객체를 반환

람다 내부에서 객체를 전혀 사용하지 않거나 객체의 속성을 변경하지 않을 때 사용한다. 대표적인 경우로 객체의 유효성 검사가 있다.

let: 람다 내부에서 it으로 객체를 사용하고 람다의 결과를 반환

얘는 주로 .? 연산자와 함께 지정된 값이 null이 아닐 때 실행하기 위한 용도로 사용된다.

run: 람다 내부에서 this로 객체를 사용하고 람다의 결과를 반환

주로 지역 변수의 범위를 제한하고 싶을 때 사용한다.

with: 객체를 넘길 때 파라미터로 넘기고 람다 내부에서 this로 객체를 사용하며 람다의 결과를 반환

얘만 유독 사용법이 튀는데(객체를 파라미터로 넘김) null이 될 수 없는 객체이고 반환값이 필요 없을 때 사용한다.

반응형

+ Recent posts