我正在尝试将函数作为参数传递,但是它抛出“无法将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'
}

最佳答案

问题是您没有将函数作为参数传递给uploadImageToParse方法。您正在通过结果。另外uploadImageToParse方法也希望safeCall单位参数,而不是函数

为此,您必须首先声明uploadImageToParse以获取功能参数。

fun uploadImageToParse(file: String?, saveCall: () -> Unit) {
    saveCall()
}

然后,您可以将函数参数传递给此方法。
uploadImageToParse(imageFile, {saveCall()})

有关该主题的更多信息,请参阅Kotlin文档中的Higher-Order Functions and Lambdas

编辑:正如@marstran指出的那样,您还可以使用Function Reference将函数作为参数传递。
uploadImageToParse(imageFile, ::saveCall)

08-18 16:52