scala - Scala- block 不能包含声明

标签 scala

我要在2D向量中搜索字符的位置时使用以下方法。

  def findChar(c: Char, levelVector: Vector[Vector[Char]]): Pos = {
    var pos: Pos
    pos.x = levelVector.indexWhere(row => row.indexOf(c) > 0)
    pos.y = levelVector(pos.x).indexOf(c)
    pos
  }
pos有两个整数字段,可记住x和y轴上的位置

但是,在var pos: Pos行上,我收到错误Block cannot contain declarations

为什么该块不能包含声明?
我的代码有什么问题?

最佳答案

你的问题是你在写var pos:Pos
您应该改写:

val pos = new Pos(...)

无论如何,在阅读代码时,它是用scala编写的Java类型。
如果你可以一成不变,那就这样吧。
在scala中,您应该使用变量实例化您的类。这意味着您不能更改类的状态,即像
pos.x =  //something
pos.y =  //something

正在更改变量pos的状态。
我建议是一成不变的
IE
val x = //something
val y = //something 
val newPos = Pos(x,y)

玩得开心

关于scala - Scala- block 不能包含声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34253356/

相关文章:

scala - 如何使用 Scala 项目运行 sbt-revolver?

scala - 为什么 Scala 在解包 Tuple 时要构造一个新的 Tuple?

scala - easymock scalatest 中 Expecting 函数中的任何参数

scala - 有条件地向列表添加选项

scala - 函数式面向对象语言的类型系统

regex - Scala 正则表达式同时正面和负面回顾

scala - 如何测量 Cats IO 效果中的耗时?

Scala - 最终超时和 Thread.sleep() 之间的区别

scala - 阶段 6.0 spark scala 中的错误执行器 : Exception in task 0. 0?

scala - 根据 ScalaQuery/SLICK 中列的 MAX 值选择行