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()希望返回一个完整的,但isendmail.sendmail返回单位:
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)
}
只是想知道这两个不同方法之间的区别是什么,第一个方法是显式的,并且期望返回一个可完成的。第二个使用lambda?
感谢您的到来,