Передача функции в качестве параметра в kotlin

Я пытаюсь передать функцию в качестве параметра, но она бросает 'Unit не может быть вызвана как функция. Спасибо заранее.

uploadImageToParse(imageFile, saveCall1())
uploadImageToParse(imageFile, saveCall2())
uploadImageToParse(imageFile, saveCall3())

private fun uploadImageToParse(file: ParseFile?, saveCall: Unit) {
        saveCall()//Throws an error saying 'Unit cannot be invoked as function'
} 

2 ответов


проблема в том, что вы не передаете функцию в качестве параметра в uploadImageToParse метод. Вы передаете результат. Также uploadImageToParse способ ожидает safeCall на блок


принятие указателя функции в качестве параметра выполняется следующим образом:

private fun uploadImageToParse(file: ParseFile?, saveCall: () -> Unit){
    saveCall.invoke()
}

на () типы параметров.

на -> Unit part-тип возврата.

Второй Пример:

fun someFunction (a:Int, b:Float) : Double {
    return (a * b).toDouble()
}

fun useFunction (func: (Int, Float) -> Double) {
    println(func.invoke(10, 5.54421))
}

для получения дополнительной информации, обратитесь к Документация Котлин