4

也许我遗漏了一些东西,但我发现在 REPL 中试验代码对我的手指比对我的大脑更好。

假设您已经定义了一个简单的类(请原谅蹩脚的例子):

scala> class Farmer(){var name = ""
     | def apply (name: String) = {this. name = name}
     | override def toString():String={name}
     | }
defined class Farmer

scala>

有没有办法获得整个定义并对其进行更改,而无需逐行重新输入或“向上箭头”。例如,假设我只想添加一个函数定义:

scala> class Farmer(){var name = ""
     | def apply (name: String) = {this.name = name}
     | override def toString():String={name}
     | def +(surname: String) = {name = name + " " + surname}
     | }
defined class Farmer

scala>

换句话说,有没有办法告诉 REPL 从前一个输入重播完整的多行条目(直到某一行),而不是一次只重播一行(就像按下向上箭头时发生的那样)?

在 'Happy land' 中,做一些类似的事情会很好,按下ALT然后输入toString然后点击return,然后 REPL 将重新输入:

scala> class Farmer(){var name = ""
     | def apply (name: String) = {this.name = name}
     | override def toString

所以基本上 REPL 会为你重新输入你的代码,直到你指定的点。

如果有人对如何使使用 REPL 比我正在做的事情更有效率有任何想法,我很乐意听取他们的意见。

4

1 回答 1

1

复制粘贴怎么样?Scala 将检测到您正在从 repl 会话中粘贴,并采取相应的措施(即忽略“scala>”和“|”)。尽管如果您使用 :paste 模式来做事,它的可读性会更高。

否则,您可能会对另一个 repl 更满意。我发现ScalaConsole非常适合这种东西。

于 2012-08-28T17:04:23.050 回答