アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

【Kotlin】関数型でスマートキャストが使えない

バージョン
Kotlin 1.3.0

以下のコードでblock()はダメだけどblock.invoke()はスマートキャストされる。

class Hoge(val block: (() -> Unit)?) {
    fun hoge() {
        if (block != null) {
            block() // NG
            block.invoke() // OK
        }
    }
}

とりあえず探してみたらあった。
https://youtrack.jetbrains.com/issue/KT-4113
普通に困るので早く直って欲しいというお気持ち。
とりあえずinvoke使うか。