【发布时间】:2018-09-26 02:02:43
【问题描述】:
Android Studio 3.3
RxJava 2
我无法理解 lambda 的显式返回。
例如,我使用的是干净的架构,并且在我的数据层中,我有以下接口和实现(不返回任何可完成的)
界面:
interface ISendMail {
fun sendMail(tellNumber: String,
membershipNumber: String,
attachmentsType: String,
message: String,
subject: String)
}
实施:
class SendEmailImp : ISendMail {
override fun sendMail(tellNumber: String, membershipNumber: String, attachmentsType: String, message: String, subject: String) {
TODO("implement sending the email")
}
}
在我的域层中,这是我遇到问题的地方: 接口返回一个可完成的:
interface SendMail {
fun sendEmail(tellNumber: String,
membershipNumber: String,
attachmentsType: String,
message: String,
subject: String): Completable
}
实现和问题是 call() 想要返回 Completable,但 iSendMail.sendMail 返回 Unit:
class SendMailImp(val iSendMail: ISendMail) : SendMail {
override fun sendEmail(tellNumber: String, membershipNumber: String, attachmentsType: String, message: String, subject: String): Completable {
return Completable.fromCallable(object: Callable<Completable> {
override fun call(): Completable {
return iSendMail.sendMail(tellNumber, membershipNumber, attachmentsType, message, subject)
}
})
}
}
但是,如果我像这样使用 lambda,一切正常:
return Completable.fromCallable {
iSendMail.sendMail(tellNumber, membershipNumber, attachmentsType, message, subject)
}
只是想知道这两种不同的方法之间有什么区别,第一种是显式的并且期望返回一个 Completable。第二个使用 lambda?
非常感谢,
【问题讨论】: