返回类型为()-> MultipartBody.Part!而不是MultipartBody.Part

时间:2019-05-27 17:01:35

标签: android kotlin lambda rx-java2

我对lambda表达式比较陌生,如果有人可以解释为什么返回类型与我期望的不同,我会喜欢它。 () -> MultipartBody.Part!到底是什么?

Single.just{
    val file = bitmapToFile(context, fileName, image)
    // create RequestBody instance from file
    val requestFile = RequestBody.create(
        MediaType.parse("multipart/form-data")
        , file
    )

    // MultipartBody.Part is used to send also the actual file name
    return@just MultipartBody.Part.createFormData("picture", file.name, requestFile)
}

2 个答案:

答案 0 :(得分:2)

missing_hour = df['data/hora'].isna() df.loc[missing_hour, 'data/hora'] = df.loc[missing_hour,'HumTechRoom'] 描述了一种功能类型。 它描述了一个不带任何参数并返回() -> MultipartBody.Part的函数。 因此,编译器抱怨说,您正在返回的是函数,而不是它期望的MultipartBody.Part

我的猜测是,MultipartBody.Part不会返回Single.just()而是返回一个函数?我对RX框架不熟悉,所以在这里我不确定。

答案 1 :(得分:0)

除了@reckter所说的是正确的以外,由于您调用MultipartBody.Part的方式,返回类型是lambda而不是Single.just对象。

更详细地讲,Single.just接受1个类型为T的参数并返回Single<T>,如javadoc中所述。在您的代码中,您传递了一个lambda(即{ ... }形式的东西)作为参数,因此您将获得一个Single<lambda>。请注意,由于Kotlin syntax,您可以省略lambda周围的括号。要解决此问题,您可以稍微更改代码:

val file = bitmapToFile(context, fileName, image)
// create RequestBody instance from file
val requestFile = RequestBody.create(
    MediaType.parse("multipart/form-data")
    , file
)

val mySingle = Single.just(MultipartBody.Part.createFormData("picture", file.name, requestFile))