1

假设我有以下代码:

case class Foo(x: SortedSet[String]) {
  def bar: Set[String] = x
}

(这是我实际代码的简化。)如果我尝试运行它,我会收到以下错误:

error: type mismatch;
found   : scala.collection.SortedSet[String]
required: Set[String]
   def bar: Set[String] = x

为什么我会收到此错误?不是SortedSet[String]一个子特征Set[String]吗?

4

1 回答 1

6

Set 是不可变的。

scala>  import scala.collection.immutable.SortedSet
import scala.collection.immutable.SortedSet

scala> :paste
// Entering paste mode (ctrl-D to finish)

case class Foo(x: SortedSet[String]) {
  def bar: Set[String] = x
}

// Exiting paste mode, now interpreting.

defined class Foo
于 2012-12-21T22:11:41.210 回答