令人困惑的println输出顺序

时间:2015-10-10 19:06:21

标签: scala

我是scala的新手。当我运行以下代码时:

object HelloWorld {

  def main(args:Array[String]): Unit =

    println("1" + (1 to 4))

    println("2" + (1 to 4))

    Thread.sleep(100)

    for(x <- (1 to 4)) {

      println(inc(x) + " " + inc_sq(x, 4))

    }

  def inc(i:Int): Int = i + 1

  def inc_sq(i:Int, r:Int): Int = 

    (i+r) * (i+r)

}

我得到了输出:

2Range(1, 2, 3, 4)
2 25
3 36
4 49
5 64
1Range(1, 2, 3, 4)

为什么会出现这种疾病? 我的意思是我认为实际输出的最后一行应该在第一行。

我在Eclipse中使用Mac和Scala。

1 个答案:

答案 0 :(得分:7)

您在.equals区块周围缺少一组括号,只会main成为println("1" + (1 to 4))的正文。其余部分作为main初始化的一部分执行。我相信,你的意图是:

object Helloworld