未来[任何]和未来之间的区别[_]

时间:2016-01-22 12:34:35

标签: scala future

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

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
}

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

1 个答案:

答案 0 :(得分:3)

这是一个语义问题:

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

T[Any]表示必须存在子类Any

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