我对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)
}
答案 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))