首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“需要”进入未来还是超越未来?

“需要”进入未来还是超越未来?
EN

Stack Overflow用户
提问于 2018-03-08 00:00:02
回答 1查看 43关注 0票数 0

如何在未来的上下文中用require函数替换第一个条件?我是否应该将整个inRange方法包装在一个未来中,如果我这样做了,如何处理最后一个未来,以便它不会返回一个未来[Future[ListUserId],或者有更好的方法?

我有一组代码如下所示:

代码语言:javascript
复制
class RetrieveHomeownersDefault(depA: DependencyA, depB: DependencyB) extends RetrieveHomeowners {
    def inRange(range: GpsRange): Future[List[UserId]] = {
        // I would like to replace this conditional with `require(count >= 0, "The offset…`
        if (count < 0) {
            Future.failed(new IllegalArgumentException("The offset must be a positive integer.")
        } else {
            val retrieveUsers: Future[List[UserId]] = depA.inRange(range)

            for (
                userIds <- retrieveUsers
                homes <- depB.homesForUsers(userIds)
            ) yield FilterUsers.withoutHomes(userIds, homes)
        }
    }
}

我开始在代码的其他领域使用require函数,但是当我试图在“期货”的上下文中使用它时,我遇到了一些问题。

代码语言:javascript
复制
class RetrieveHomeownersDefault(depA: DependencyA, depB: DependencyB) extends RetrieveHomeowners {
    // Wrapped the entire method with Future, but is that the correct approach?
    def inRange(range: GpsRange): Future[List[UserId]] = Future {
        require(count >= 0, "The offset must be a positive integer.")

        val retrieveUsers: Future[List[UserId]] = depA.inRange(range)

        // Now I get Future[Future[List[UserId]]] error in the compiler.
        for (
            userIds <- retrieveUsers
            homes <- depB.homesForUsers(userIds)
        ) yield FilterUsers.withoutHomes(userIds, homes)
    }
}

如有任何建议、反馈或建议,将不胜感激。我刚刚开始使用“期货”,但我仍然很难理解许多概念。

谢谢一堆人!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-08 00:28:23

只需删除外部Future {...}包装器即可。这没必要。require调用没有很好的理由进入Future。从那时起,它会立即(在同一个线程中)向调用方报告该参数无效,这实际上更好。

顺便说一下,原来的代码也错了。创建了Future.failed(...),但没有返回。所以本质上它什么也没做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49163266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档