随机随机播放不适用于Range

And*_*idy 8 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
Run Code Online (Sandbox Code Playgroud)

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

错误消息似乎真的只告诉我"你做不到".任何人都有任何洞察力为什么?

win*_*ner 7

Scala推断出错误的类型参数shuffle.您可以强制使用以下工作:

Random.shuffle[Int, IndexedSeq](0 until 4)
Run Code Online (Sandbox Code Playgroud)

或破碎的:

Random.shuffle[Int, AbstractSeq](0 to 4)
Run Code Online (Sandbox Code Playgroud)

我不知道它为什么会出现错误的参数Range,如返回的until,但正确的参数Range.Inclusive,如返回to.Range.Inclusive直接子类Range而不混合任何特征,因此不应对其进行任何不同的处理.这对我来说就像是一个Scala bug.