我在scala
中的嵌套数组对象上有一对循环def populateBoard(data:Array[Array[Char]]) {
Board.resize(data(0).length, data.length)
for(y <- 0 to data.length-1) {
val row = data(y)
for(x <- 0 to row.length-1) {
Board.putObjectAt(x,y,GamePieceFactory.createInstance(row(x),x,y))
}
}
}
在单元测试中哪种方法很好,但是当我运行应用程序时,我得到以下异常:
java.lang.NoSuchMethodError: scala.runtime.RichInt.to(I)Lscala/Range;
at net.ceilingfish.pacman.App$.populateBoard(App.scala:37)
第37行是for(y <- 0 to data.length-1)
行。很奇怪。单元测试运行scala 2.6.1,命令行为2.7.7。这两个版本之间是否存在一些向后不兼容的变化?
更新我将单元测试切换到版本2.7.7并继续正常工作。甚至更奇怪。
答案 0 :(得分:4)
Scala在版本之间通常不是二进制兼容的。特别是,这意味着如果你编译2.6.1然后尝试运行2.7.7,即使语法根本没有改变,库几乎肯定有,因此你可能会遇到错误。我怀疑你没有使用你正在编译的相同版本运行。
此外,您可能希望使用0 until n
而不是0 to n - 1
。