编辑:根据原始答案重写这个问题
该scala.collection.immutable.Set班是不是在它的类型参数不变性.为什么是这样?
import scala.collection.immutable._
def foo(s: Set[CharSequence]): Unit = {
println(s)
}
def bar(): Unit = {
val s: Set[String] = Set("Hello", "World");
foo(s); //DOES NOT COMPILE, regardless of whether type is declared
//explicitly in the val s declaration
}
Run Code Online (Sandbox Code Playgroud) 好的,我想标题中的问题已经完成。没什么大不了,但我只是想知道。我有一个返回正确值或错误代码枚举项的方法。例如这样的事情:
def doMyStuff(): Future[_] = {
val result = db.queryMyData().map {
case some(data) =>
val modifiedData = data.doStuff()
modifiedData
case None =>
Errors.THIS_IS_FALSE
}
result
}
Run Code Online (Sandbox Code Playgroud)
Where db.queryMyData()返回一个Future,并且data.doStuff()只修改数据。
现在我已经直观地编写了Future[_],导致返回值很灵活。但是当我在其他库中查找时,我已经看到Future[Any]使用过的。当在函数返回时使用区分大小写以检查它是哪个数据时,这似乎也是逻辑。
使用的代码例如是这样的:
doMyStuff().map {
case data: MyDataType => // Blah blah
case Errors.Value => // error handling
}
Run Code Online (Sandbox Code Playgroud)
因此,我的问题是:在此处使用Any或_有什么区别,为什么我应该使用正确的?