Kotlin で関数をパラメータとして渡す 質問する

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'
} 

ベストアンサー1

問題は、メソッドに関数をパラメータとして渡していないことですuploadImageToParse。結果を渡しています。また、メソッドuploadImageToParsesafeCallユニットパラメータは関数

これを機能させるには、まずuploadImageToParse関数パラメータを期待することを宣言する必要があります。

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

次に、このメソッドに関数パラメータを渡すことができます。

uploadImageToParse(imageFile, {saveCall()})

このトピックに関する詳細については、以下をご覧ください。高階関数とラムダKotlin ドキュメント内。

編集: @marstranが指摘したように、次のように関数をパラメータとして渡すこともできます。関数リファレンス

uploadImageToParse(imageFile, ::saveCall)

おすすめ記事