Scala:在for循环中声明val,如果条件

Las*_*k3r 12 scala

我是一个scala初学者,并试图了解val如何在Scala中工作.我读到vals无法修改.当我执行以下操作时:

for( line <- Source.fromFile(args(0)).getLines() ) {
   val currentLine = line
   println(currentLine)
}
Run Code Online (Sandbox Code Playgroud)

currentLine在每次迭代中都会更新,而我希望它可以用第一行初始化并保持到最后,或者至少给出某种重新初始化错误.为什么会这样?是否在每次迭代中创建并销毁了val?我的第二个问题:如果在下面的代码中我想使用x outside.

if( some condition is satisfied) val x = 2 else val x = 3
Run Code Online (Sandbox Code Playgroud)

截至目前,我正在收到"非法表达简单表达"错误.有没有办法在外面使用x?

Kig*_*gyo 19

  1. 是的,val每次迭代都会创建和销毁.

  2. val x = if(condition) 2 else 3 会做你想做的.

编辑:您可以重写2. if(conditon) {val x = 2} else {val x = 3}(以使其编译),但这不会做任何事情,因为if不返回任何内容,并且该变量不能在if