在Scala中将Set [Range]设置为Set [Int]

时间:2018-03-02 07:09:51

标签: scala

我试图在两组之间设置差异如下:

val set1 = Set(1, 2, 3, 4, 5)
// gives:  scala.collection.immutable.Set[Int]
val set2 = Set(0 until 10)
// gives:  scala.collection.immutable.Set[scala.collection.immutable.Range]

但是,以下错误:

scala> set2.diff(set1)
<console>:14: error: type mismatch;
found   : scala.collection.immutable.Set[Int]
required: scala.collection.GenSet[scala.collection.immutable.Range]
      set2.diff(set1)
                ^

如何以最简单的方式将Set[Range]转换为Set[Int]

2 个答案:

答案 0 :(得分:3)

你可以这样做:

(0 to 10).toSet

或坚持你最初的想法(但不太干净):

Set(0 until 10).flatten

返回:

scala.collection.immutable.Set[Int] = Set(0, 5, 1, 6, 9, 2, 7, 3, 8, 4)

如果您使用列表,则可以执行此操作(它似乎不适用于Set):

List.range(0, 10)

答案 1 :(得分:0)

与上面建议的答案相似

(0 until 10).toSet

也可以使用并返回相同的内容。