Scala 为什么这个代码没有终止

Scala 为什么这个代码没有终止,scala,Scala,此代码: object SpeedTest extends Application{ val l = (1 to 50).toList.par println("par done") var counter = 0; for(e <- l){ counter + 1 } println("Finished") } 这会终止,所以扩展应用程序可能会产生不利影响 更新2: 我的设置: Version: Kepler Service Release

此代码:

object SpeedTest extends Application{

  val l = (1 to 50).toList.par

  println("par done")
  var counter = 0;

  for(e <- l){
      counter + 1
  }

  println("Finished")

}
这会终止,所以扩展应用程序可能会产生不利影响

更新2:

我的设置:

Version: Kepler Service Release 2
Build id: 20140224-0627
Java version : 1.6
Scala version : 2.10.4

正如Ben Reich所说,这可能是一个REPL错误,我认为这是一个由于某种“递归死锁”而发生的错误。如果我将计数器变量移动到另一个对象中,我可以使其工作,如下所示:

object Somes{ var counter = 0}

object SpeedTest{
  val l = (1 to 7).toList.par

  println("par done")
  var counter = 0;
  for(e <- l){
      println("loop start for " + e)
      Somes.counter + 1
      println("loop done for " + e)
  }
  println("Finished")
}
objectsomes{var counter=0}
物体速度测试{
Vall=(1到7)
println(“par done”)
var计数器=0;

例如(e)我不熟悉scala,但我很感兴趣,所以请原谅这个愚蠢的问题。我不明白这是如何多线程的?(怎么会有死锁?)我假设每个循环都是a?在scala中,
e
和计数器可以有任何交互吗?范围没有toList?所以不确定它是如何工作的。这对我来说是有效的。你的设置是什么?@carlosbuibeiescas
.par
将列表变成了一个。@ggovan我用setupThank编辑了一个问题,我还发布了一个问题的更新,这个问题也是导致代码终止
object Somes{ var counter = 0}

object SpeedTest{
  val l = (1 to 7).toList.par

  println("par done")
  var counter = 0;
  for(e <- l){
      println("loop start for " + e)
      Somes.counter + 1
      println("loop done for " + e)
  }
  println("Finished")
}