如何在Scala REPL中回显用户输入?
我正在用Scala教授一门编程入门课。我们从REPL开始。REPL有一个缺陷,当学生输入readLine命令时,他们的输入不会得到响应。我可以建议或提供一些变通方法吗如何在Scala REPL中回显用户输入?,scala,read-eval-print-loop,Scala,Read Eval Print Loop,我正在用Scala教授一门编程入门课。我们从REPL开始。REPL有一个缺陷,当学生输入readLine命令时,他们的输入不会得到响应。我可以建议或提供一些变通方法吗 我在使用Eclipse时没有遇到这种问题,但在我向学生介绍Eclipse之前需要几周时间。使用scala-Xnojline: scala> val l = readLine test l: String = test 但是,这会破坏某些功能,特别是箭头键,因此您无法修改以前的命令 如果可用,您可以使用rlwrap scal
我在使用Eclipse时没有遇到这种问题,但在我向学生介绍Eclipse之前需要几周时间。使用
scala-Xnojline
:
scala> val l = readLine
test
l: String = test
但是,这会破坏某些功能,特别是箭头键,因此您无法修改以前的命令
如果可用,您可以使用rlwrap scala-Xnojline
(也应在cygwin上提供)来恢复这些功能
完全归功于。您可以使用电源模式访问REPL的读卡器;它将为您提供一个完整的阅读行
:
scala> :power
** Power User mode enabled - BEEP WHIR GYVE **
** :phase has been set to 'typer'. **
** scala.tools.nsc._ has been imported **
** global._, definitions._ also imported **
** Try :help, :vals, power.<tab> **
scala> repl.in.readLine("enter something: ")
enter something: hello world
res0: String = hello world
scala>
scala>:电源
**电源用户模式已启用-哔哔声**
**:相位已设置为“typer”**
**scala.tools.nsc.\已导入**
**全局。\定义。\也已导入**
**尝试:帮助、:VAL、电源**
scala>repl.in.readLine(“输入内容:”)
输入:你好,世界
res0:String=hello world
斯卡拉>
Edit:正如@som snytt所指出的,在2.11中,您可以在上面的代码中使用
reader
而不是repl.in
,这既短又容易记忆。@som snyttreader.readLine
由于某种奇怪的原因不能与2.10一起工作。我猜这就是问题所在。谢谢!repl.in.readLine工作正常;reader.readLine没有在我的Mac电脑上,我得到错误:找不到:值读取器在Windows上,我得到错误:无法在scala.tools.nsc.Global中访问全局类中的值读取器
repl.in.readLine在任何情况下都可能对我的学生更好,因为它强调这仅适用于repl。