関数をパラメータとして渡そうとしていますが、「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'
}
ベストアンサー1
問題は、メソッドに関数をパラメータとして渡していないことですuploadImageToParse
。結果を渡しています。また、メソッドuploadImageToParse
はsafeCall
ユニットパラメータは関数。
これを機能させるには、まずuploadImageToParse
関数パラメータを期待することを宣言する必要があります。
fun uploadImageToParse(file: String?, saveCall: () -> Unit) {
saveCall()
}
次に、このメソッドに関数パラメータを渡すことができます。
uploadImageToParse(imageFile, {saveCall()})
このトピックに関する詳細については、以下をご覧ください。高階関数とラムダKotlin ドキュメント内。
編集: @marstranが指摘したように、次のように関数をパラメータとして渡すこともできます。関数リファレンス。
uploadImageToParse(imageFile, ::saveCall)