如何在Scala Spark中更新if语句中的变量?

如何在Scala Spark中更新if语句中的变量?,scala,apache-spark,if-statement,scope,var,Scala,Apache Spark,If Statement,Scope,Var,我有一个跟踪变量,用来表示我们是否在嵌套的if-else语句中到达了某个分支。下面是一个简化的例子 var varChanged = false if(true) { var varChanged = true } varChanged //still returns false 我想在if语句中更新varChanged的值。我该怎么做呢?我不能将if语句用作像var varchange=if(..)这样的表达式,因为我将它用作另一个val的表达式,而varchange只是我需要的一个跟

我有一个跟踪变量,用来表示我们是否在嵌套的if-else语句中到达了某个分支。下面是一个简化的例子

var varChanged = false
if(true) {
  var varChanged = true
}

varChanged //still returns false

我想在if语句中更新
varChanged
的值。我该怎么做呢?我不能将if语句用作像
var varchange=if(..)
这样的表达式,因为我将它用作另一个val的表达式,而
varchange
只是我需要的一个跟踪变量。

删除内部
var
关键字

var varChanged=false
如果(真){
varChanged=true
}
通过在内部作用域中再次声明,您对外部
varChanged
进行了跟踪


您应该尽可能避免使用
var
s。

谢谢!在避免
var
的同时,是否还有其他方法可以做到这一点?尽可能避免
var
的原因是什么?我的意思是你的案例太琐碎了:
val varChanged=true
。只要强迫自己使用
val
。这些是一些原因,但你也可以在其他地方阅读更多关于不变性的内容。但在我的情况下,
val varChanged=true
不起作用,因为我无法更新
val
。除了使用
var
,还有其他方法可以做到这一点吗?像这样的情况或必须为for循环设置某种计数器在我的代码中经常发生我不知道你的整个代码看起来是什么样子。。。。。您也不应该使用for循环。。。。