斯卡拉错误:';'预计但'='发现
问题描述:
有人可以帮我理解为什么下面的代码导致上述错误?斯卡拉错误:';'预计但'='发现
该代码用于将二维数组旋转90度。
def rotate90(block: Array[Array[Int]]) = {
var size: Int = block.size
var i: Int = 0
var j: Int = size - 1
while (j >= 0) {
while (i <= j) {
val a = block[j][i]
val b = block[j - i][j]
block[j][i] = b
block[j - i][j] = a
i = i + 1
}
j = j - 1
}
return block
}
答
def rotate90(block: Array[Array[Int]]) = {
val copy: Array[Array[Int]] = Array.ofDim[Int](block.length, block(0).length)
for (w <- 0 until block(0).length;
h <- 0 until block.length) {
copy(h).update(w, block(block(0).length - 1 - w)(h))
}
copy
}
以上是对你问题的斯卡拉解决方案。也许你更好理解scala中的数组是如何工作的。
欢迎来到StackOverflow。你能告诉我们错误发生在哪里吗?没有这些信息,我们将很难帮助你。 – 2014-09-23 07:44:45
数组访问符号(和一般集合)在scala中是'()',所以'block [j] [i]'应该是'block(j)(i)',依此类推。 – 2014-09-23 07:50:34
Akso'val a:Array [Array [Int]] = block [j] [i]'? 'a'是一个Int(至少,'block(j)(i)'是一个Int)。你的代码似乎相当困惑。在任何情况下,您都可以删除'a'和'b'的显式类型,编译器会解决这个问题。 – 2014-09-23 09:34:31