Мультиплатформенный лямбда-вызов Kotlin без единицы возврата - PullRequest
1 голос
/ 20 мая 2019

У меня есть мультиплатформенный проект Kotlin для Android и iOS.Функции в общем модуле написаны так:

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обрабатывать тип возврата (Unit) сам по себе (ничего не нужно возвращать), в то время как вы должны вернуть KotlinUnit() в iOS.

Я бы хотел добиться того же в iOS (обратный вызов без return KotlinUnit())

1 Ответ

1 голос
/ 20 мая 2019

См. https://github.com/JetBrains/kotlin-native/pull/2968, которые будут объединены в следующем выпуске Kotlin / Native.

...