코틀린에서 자주 사용되는 관용구 takeIf,let,엘비스 연산자는 코틀린 개발자는 익숙하지만, 숙련된 개발자만을 위한 코드는 좋은 코드가 아니다
takeIf
public inline fun <T> T.takeIf(predicate: (T) -> Boolean): T? = if (predicate(this)) this else null
let
inline fun <T, R> T.let(block: (T) -> R): R { return block(this) }
첫번째 예제는 두번째 예제보다 수정이 용이하다
함수 참조를 사용할 수 없으므로 람다식 수정 필요
let의 리턴값이 null이면 showError가 호출된다. 첫번째 예제와 다르게 동작할 수 있음