没有单元返回类型的Kotlin多平台Lambda调用

时间:2019-05-20 08:18:47

标签: ios kotlin kotlin-multiplatform kotlin-native

我有一个适用于Android和iOS的多平台Kotlin项目。通用模块中的功能是这样写的:

fun test(successCallback: (String) -> Unit, errorCallback: (Error) -> Unit) {
    successCallback("success")
}

Android功能用法:

Common.test(successCallback = { 
                Log.d(TAG, it) 
            },
            errorCallback = {
                Log.d(TAG, it)
            }
})

iOS功能用法:

Common.test(successCallback: { it in
                print(it)
                return KotlinUnit()
            }, errorCallback: { error in
                print(error)
                return KotlinUnit()
            })

JVM世界似乎可以自行处理返回类型(单元)(无需返回任何内容),而您必须在iOS中返回KotlinUnit()

我想在iOS上实现相同的目标(不使用return KotlinUnit()进行回调)

1 个答案:

答案 0 :(得分:1)

请参阅https://github.com/JetBrains/kotlin-native/pull/2968,它将在即将发布的Kotlin / Native版本中合并。