Scala 方法包含';I don’我不工作
我正在运行Scala 2.9.2 REPL,如果我复制并粘贴以下方法:Scala 方法包含';I don’我不工作,scala,read-eval-print-loop,Scala,Read Eval Print Loop,我正在运行Scala 2.9.2 REPL,如果我复制并粘贴以下方法: def isPrime(num: Int): Boolean = { val ceiling = math.sqrt(num.toDouble).toInt (2 to ceiling) forall (x => num % x != 0) } ..从带有源代码的文件(在其中工作良好)到交互式解释器。我得到一个例外: java.lang.IllegalArgumentException: !=
def isPrime(num: Int): Boolean = {
val ceiling = math.sqrt(num.toDouble).toInt
(2 to ceiling) forall (x => num % x != 0)
}
..从带有源代码的文件(在其中工作良好)到交互式解释器。我得到一个例外:
java.lang.IllegalArgumentException: != 0): event not found
at jline.console.ConsoleReader.expandEvents(ConsoleReader.java:426)
...
问题在于代码>字符(不带感叹号的方法效果很好)
有什么方法可以让这个方法在REPL中工作吗?我在最初的安装中无法克服这个问题,但是安装新版本的Scala有帮助。也许,这是Fedora 17 rpm Scala软件包的问题
您可能错过了此实例:
但是paulp补丁不向后兼容
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> $r.r.in.asInstanceOf[scala.tools.nsc.interpreter.JLineReader].consoleReader.setExpandEvents(false)
scala> 1 != 2
res1: Boolean = true
这在Ubuntu上的Scala 2.9.2和2.10.1中非常适合我。你在哪个系统上运行它?奇怪的是,Fedora 17(32位PAE)、Oracle Java 7(但在OpenJDK和Oracle Java 6上是相同的)也许jLine正在读取一个配置文件(一些*rc
文件),该文件启用了类似于shell的历史函数?看起来像是一个bug(不幸的是(对我来说),他们关闭它时并不是bug):/Deleted my error response--您应该添加您自己的答案以及解决问题的方法。不幸的是,Scala 2.9.2不适用(setExpandEvents()
方法在该版本中的JLineConsoleReader
类中缺失),我还必须将$r.r.in.
替换为$r.repl.in.
,以使其工作。我接受这个答案,因为它解决了新版本Scala的问题,API已经就位。
scala> 1 != 2
java.lang.IllegalArgumentException: != 2: event not found