在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]的集合。
错误消息似乎真的只告诉我"你不能这样做"。任何人都知道为什么?
答案 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。