好吧,我猜题目已经写好了。没什么大不了的,但我只是想知道。我有一个返回正确值或错误代码枚举项的方法。例如,如下所示:
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]使用了。这似乎也是逻辑的,当您在返回函数时使用匹配大小写来检查它是哪些数据。
例如,使用它的代码如下所示:
doMyStuff().map {
case data: MyDataType => // Blah blah
case Errors.Value => // error handling
}所以,我的问题是:在这里使用Any或_有什么区别,为什么要使用正确的?
发布于 2016-01-22 14:10:54
这是一个语义学问题:
存在类型T[_]意味着_位置上有一个类/类型,我根本不关心这个类/类型,但它必须存在。
T[Any]意味着必须有一个子类Any存在。
当您想序列化基础类时,这种差异就会起作用。如果您只使用没有任何类型界限的_,那么您将无法使用许多Scala库中的一些库。
https://stackoverflow.com/questions/34946863
复制相似问题