相关疑难解决方法(0)

为什么Scala的不可变Set在其类型中不协变?

编辑:根据原始答案重写这个问题

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)

scala set covariance scala-collections

89
推荐指数
3
解决办法
7386
查看次数

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

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

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_有什么区别,为什么我应该使用正确的

scala future

5
推荐指数
1
解决办法
570
查看次数

标签 统计

scala ×2

covariance ×1

future ×1

scala-collections ×1

set ×1