首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Future[Any]与Future[_]的区别

Future[Any]与Future[_]的区别
EN

Stack Overflow用户
提问于 2016-01-22 12:34:35
回答 1查看 919关注 0票数 5

好吧,我猜题目已经写好了。没什么大不了的,但我只是想知道。我有一个返回正确值或错误代码枚举项的方法。例如,如下所示:

代码语言:javascript
复制
def doMyStuff(): Future[_] = {
    val result = db.queryMyData().map {
        case some(data) =>
            val modifiedData = data.doStuff()
            modifiedData
        case None =>
            Errors.THIS_IS_FALSE
    }
    result
}

其中db.queryMyData()返回一个未来,而data.doStuff()只是修改数据。

现在我已经直观地编写了Future[_],因为返回值是灵活的。但是在查看其他库时,我已经看到Future[Any]使用了。这似乎也是逻辑的,当您在返回函数时使用匹配大小写来检查它是哪些数据。

例如,使用它的代码如下所示:

代码语言:javascript
复制
doMyStuff().map {
    case data: MyDataType => // Blah blah
    case Errors.Value => // error handling
}

所以,我的问题是:在这里使用Any_有什么区别,为什么要使用正确的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-22 14:10:54

这是一个语义学问题:

存在类型T[_]意味着_位置上有一个类/类型,我根本不关心这个类/类型,但它必须存在。

T[Any]意味着必须有一个子类Any存在。

当您想序列化基础类时,这种差异就会起作用。如果您只使用没有任何类型界限的_,那么您将无法使用许多Scala库中的一些库。

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

https://stackoverflow.com/questions/34946863

复制
相关文章

相似问题

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