gpt4 book ai didi

scala - Future[Any] 和 Future[_] 之间的区别

转载 作者:行者123 更新时间:2023-12-04 02:40:53 25 4
gpt4 key购买 nike

好的,我想问题已经在标题中完成了。
没什么大不了的,但我只是想知道。我有一个方法可以返回正确的值或错误代码枚举项。例如这样的事情:

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()返回一个 Future,和 data.doStuff()只是修改数据。

现在我已经直觉地写了 Future[_] ,因为返回值是灵活的。但是在查看其他图书馆时,我看到了 Future[Any]用过的。当您在函数返回时使用匹配案例来检查它是哪个数据时,这似乎也是逻辑。

使用它的代码例如是这样的:
doMyStuff().map {
case data: MyDataType => // Blah blah
case Errors.Value => // error handling
}

所以,我的问题是:使用 有什么区别?任意 _ 在这里,为什么我应该使用正确的?

最佳答案

这是一个语义问题:

存在类型 T[_]表示在 _ 的位置有一个类/类型我根本不在乎,但它必须在那里。
T[Any]意味着必须有一个子类 Any展示。

当您想要序列化基础类时,差异就会发挥作用。
如果您只是使用 _如果没有任何类型限制,您将无法使用许多 Scala JSON 库中的一些。

关于scala - Future[Any] 和 Future[_] 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34946863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com