如何在Scala Spark中更新if语句中的变量?
我有一个跟踪变量,用来表示我们是否在嵌套的if-else语句中到达了某个分支。下面是一个简化的例子如何在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只是我需要的一个跟
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循环。。。。