scala – 使用future将仅限副作用的函数转换为异步.哪种退货类型
发布时间:2020-12-16 18:42:54 所属栏目:安全 来源:网络整理
导读:我在使用Akka和 Scala的真实项目中第一次工作.在为DAO设计接口时(将有两个实现:内存和mongo),我带来了以下疑问.假设我们有像这样的UserRepository的同步版本 trait UserRepository { def find(id: Int): Option[User] def save(user: User): User def delet
我在使用Akka和
Scala的真实项目中第一次工作.在为DAO设计接口时(将有两个实现:内存和mongo),我带来了以下疑问.假设我们有像这样的UserRepository的同步版本
trait UserRepository { def find(id: Int): Option[User] def save(user: User): User def delete(user: User): Unit } 和它的异步版本将是这样的: trait UserRepository { def find(id: Int): Future[Option[User]] def save(user: User): Future[User] def delete(user: User) } 您如何定义删除方法的返回时间?未来[单位]?未来[任何]未来[无效]?在异步操作中返回的最佳类型是什么,我只关心它的副作用是否成功应用.我没有什么可以返回,但我想知道删除是否成功完成,或者如果异常能够注册onFailure回调. 解决方法
您应该使用Future [Unit],原因与在同步情况下使用Unit完全相同 – 您需要返回一些内容,但没有任何需要返回的内容.另一方面,未来[任何]意味着“这里有东西,但我不会告诉你它是什么”.让我们甚至不谈论Future [Void]意味着什么.
如果您不想接受我的话,请快速搜索 您还可以在Haskell中使用IO()找到这个习惯用法 – 其中()是单位类型,IO在某些方面类似于Scala的Future-来表示我们只关心副作用的计算. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |