我在 Scala 中收到了错误"error: expected class or object definition"



我有下面的代码,但我收到了错误:预期的类或对象定义。并引用了Val矩阵。问题出在哪里?

object Main{
def squaresHaveNoDuplicates(matrix: Array[Array[Int]]) = {
val rowBlocks = matrix.grouped(3).toArray
println(rowBlocks)
}
}      
val matrix= Array(
Array(0, 5, 0, 3, 0, 9, 0, 2, 6),
Array(3, 8, 9, 4, 2, 0, 1, 5, 7),
Array(4, 0, 6, 1, 0, 0, 0, 8, 9),
Array(0, 1, 3, 7, 9, 8, 0, 0, 4),
Array(0, 0, 8, 0, 0, 0, 5, 0, 0),
Array(0, 6, 0, 0, 0, 3, 0, 0, 0),
Array(0, 0, 1, 9, 3, 0, 0, 4, 0),
Array(9, 3, 5, 6, 4, 0, 8, 0, 1),
Array(0, 0, 2, 8, 7, 0, 0, 0, 5)
squaresHaveNoDuplicates(matrix)

编辑:即使我尝试一个简单的代码,如:

val str= Array(1,2,3)

我在REPL中收到了同样的错误。

有一些简单的语法错误。

object Main extends App {
def squaresHaveNoDuplicates(matrix: Seq[Seq[Int]]) = {
val rowBlocks = matrix.grouped(3).toSeq
println(rowBlocks)
}
val matrix = Seq(
Seq(0, 5, 0, 3, 0, 9, 0, 2, 6),
Seq(3, 8, 9, 4, 2, 0, 1, 5, 7),
Seq(4, 0, 6, 1, 0, 0, 0, 8, 9),
Seq(0, 1, 3, 7, 9, 8, 0, 0, 4),
Seq(0, 0, 8, 0, 0, 0, 5, 0, 0),
Seq(0, 6, 0, 0, 0, 3, 0, 0, 0),
Seq(0, 0, 1, 9, 3, 0, 0, 4, 0),
Seq(9, 3, 5, 6, 4, 0, 8, 0, 1),
Seq(0, 0, 2, 8, 7, 0, 0, 0, 5)
)
squaresHaveNoDuplicates(matrix)
}
  1. 类似代码的值分配val matrix = Array(...)不能位于classobject之外。因此出现错误消息
  2. 缺少用于定义外部matrix: Array的括号
  3. println不会打印Array的内容,我用Seq替换了它
  4. Main不会运行,除非它扩展了App或定义了main方法。JVM需要有一个进入程序的入口点,惯例是这是一个def main(arg: Array[String])。ScalaApp正在使用所谓的延迟初始化,但它在Scala 3中被逐步淘汰。点击此处阅读更多信息

相关内容

最新更新