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