Scala 我可以修改我之前在REPL中键入的代码吗?

Scala 我可以修改我之前在REPL中键入的代码吗?,scala,Scala,也许我遗漏了什么,但我发现在REPL中尝试代码对我的手指比对我的大脑更好 假设您定义了一个简单的类(请原谅这个糟糕的示例): 有没有一种方法可以获取整个定义并对其进行更改,而无需逐行重新键入或“向上箭头”。例如,假设我只想添加一个函数定义: scala> class Farmer(){var name = "" | def apply (name: String) = {this.name = name} | override def toString():String

也许我遗漏了什么,但我发现在REPL中尝试代码对我的手指比对我的大脑更好

假设您定义了一个简单的类(请原谅这个糟糕的示例):

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

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重放来自上一个输入的完整多行条目(最多一行),而不是一次只重放一行(按向上箭头时发生的情况)

在“快乐之地”中,按
ALT
,然后键入
toString
,然后点击
return
,然后REPL将重新键入:

scala> class Farmer(){var name = ""
     | def apply (name: String) = {this.name = name}
     | override def toString
因此,REPL基本上会为您重新键入代码,直到您指定的点


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

复制和粘贴如何?Scala将检测到您正在从repl会话粘贴,并相应地执行操作(即忽略“Scala>”和“|”)。不过,如果使用:粘贴模式进行操作,则可读性更高


否则,你可能会更喜欢另一个回复。我发现这对这类东西非常有用。

将代码保存在文本编辑器中,修改它,然后粘贴回?在桌面GUI应用程序中提供多行编辑器以调用REPL。您可以通过按Shift Return键重新计算代码块。我使用它正是因为这个功能。@0\u我想试试,但我无法在Windows上克隆存储库,因为它有一个名为
aux
的目录,它是保留的。是否可以将此名称更改为其他名称@0_uuu;我现在正在使用Scalaconole,但ScalaInterpreterPane看起来也很棒。谢谢-我稍后会试一试
aux
是windows中的保留目录名吗??哇,我不知道。我现在已经上传了一些二进制文件,应该可以了。在任何情况下,我都会在下一个版本中更改该包的名称。我不知道REPL会忽略来自REPL会话的“噪音”。太好了!
scala> class Farmer(){var name = ""
     | def apply (name: String) = {this.name = name}
     | override def toString