public inline fun <T,R> T.let(block: (T)->R): R = block(this)
대상 객체를 매개변수로 사용(내부적으로 it으로 사용),
특정값 반환 가능(객체 본인이든 다른 변수든)
also()
public inline fun <T> T.also(block: (T)->Unit): T = {block(this); return this}
대상 객체를 매개변수로 사용(it),
특정값 반환이 없으며 객체 본인이 반환 됨
apply()
public inline fun <T> T.apply(block: T.()->Unit): T = {block(); return this}
대상 객체의 확장함수 형식으로 사용(this또는 내부 값 사용시 this.생략가능(ex. person.name > name)),
특정값 반환이 없으며 객체 본인이 반환 됨
참조 : https://medium.com/@limgyumin/코틀린-의-apply-with-let-also-run-은-언제-사용하는가-4a517292df29