【发布时间】:2020-06-15 14:21:19
【问题描述】:
我有一些方法的调用链,我通过 Kleisli 传递上下文。基本上我想将一个上下文传递给数据库访问层,但我想在两者之间的任何地方访问这个上下文。
以下示例完美运行。不过我的问题是,我也想访问OrderService.findAll(...) 中的上下文。我尝试了几种方法,但总是失败。
object OrderRepository {
fun findAll(userId: String): Kleisli<Context, ForIO, List<Order>> =
Kleisli { ctx ->
IO {
ctx.db.query("someQuery")
}
}
}
object OrderService {
fun findAll(userId: String): Kleisli<Context, ForIO, List<OrderResponse>> =
OrderRepository.findAll(userId).map(IO.monad()) { orderList ->
orderList.map {
//Create OrderResponse from Order
}
}
}
是否可以访问那里的上下文,或者这没有任何意义?感谢您的帮助:)
【问题讨论】:
标签: kotlin functional-programming arrow-kt