Kotlin note

By Moka

run { } 을 쓸때 주의점

@kotlin.internal.InlineOnly public inline fun <T, R> T.run(block: T.() -> R): R { /* compiled code */ }

를 보면 알수있듯이 return 값이 있어야 한다. 따라서 run 안의 lambda 표현식 안에서 if 문을 쓸경우 else 문으로 끝내야 한다. else if 로 끝낼경우 컴파일 에러가 나며, 이때는 마지막에 Unit 을 입력 해 주어야 한다

by lazy

val realm: Realm by lazy { RealmHelper.getInstance() }
/*
    예를 들어 위와 같이 쓴다면 realm 객체는 최초 호출될때 lazy 의 람다식이 실행되며 
    다시 호출될때는 캐쉬하고 있다가, 캐쉬된 객체를 넘겨준다
*/

Extensions [StringExt.kt]

fun String.parseFailure(): FailureResponse? {

    var result: FailureResponse?

    try {
        result = Gson().fromJson(this, FailureResponse::class.java)
    } catch(err: JsonSyntaxException) {
        result = null
    }
    return result
}
/*
    String 에 함수를 추가하는것 처럼 보이는 기능, Util 클래스를 대체할수있다. 
    밖에서 쓸때는 
    "{'err':400,'info':'invalid'}".parseFailure() 
    로 쓰게되면 FailureResponse 객체를 반환하게 된다.
*/