Передача функции в качестве параметра в 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))
}
для получения дополнительной информации, обратитесь к Документация Котлин