解释REPL发生的事情

时间:2014-08-04 01:32:04

标签: scala

我一直在REPL中学习/试验Scala。 顺便说一句,作为旁注,到目前为止,我印象非常深刻。我发现语言很漂亮。

以下情况发生了,需要解释发生了什么。

提前感谢您提供的任何帮助。

在REPL输入:

def withMarks(mark: String)(body:  => Unit){
  println(mark + " Init")
  body
  println(mark + " End")
}
val a = "Testing clojure with paremeter by name as control structure"
withMarks("***"){
  println(a)
  println("more expressions")
}

一切都按预期工作。

比我认为奇怪的事情发生的事情,出于我怀疑的无知。我输入了更多东西:

class FileAsIterable{
  def iterator = scala.io.Source.fromFile("/Users/MacBookProRetina/Google Drive/NewControl.scala").getLines()
}

val newIterator = new FileAsIterable with Iterable[String]

评估REPL打印的最后一行时:

newIterator: FileAsIterable with Iterable[String] = (def withMarks(mark: String)(body:  => Unit){,   println(mark + " Init"),   body,   println(mark + " End"), }, val a = "Hola Mundo", withMarks("***"){,   println(a), })

即使在Mac中重新启动终端并在不同的目录位置运行scala REPL,我仍然会得到相同的结果。

不知道newIterator val如何连接到withMarks def。

1 个答案:

答案 0 :(得分:0)

没关系。我只是对文件的内容感到困惑