随机随机播放不适用于Range

时间:2014-05-07 17:10:18

标签: scala

在Java 7上运行的Scala版本2.10.3

import scala.util.Random
Random.shuffle(0 to 4) // works
Random.shuffle(0 until 4) // doesn't work

:9:错误:无法根据类型为scala.collection.AbstractSeq [Int]的集合构造类型为int的元素scala.collection.AbstractSeq [Int]的集合。

错误消息似乎真的只告诉我"你不能这样做"。任何人都知道为什么?

1 个答案:

答案 0 :(得分:7)

Scala正在向shuffle推断错误的类型参数。您可以使用以下方法强制使用:

Random.shuffle[Int, IndexedSeq](0 until 4)

或破碎的:

Random.shuffle[Int, AbstractSeq](0 to 4)

我不知道为什么Range会为until提供错误的参数,而Range.Inclusive返回的错误参数由to返回}。 Range.Inclusive直接子类Range而不混合任何特征,因此不应对其进行任何不同的处理。对我来说这看起来像是一个Scala bug。

相关问题