我正在运行 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)
}
..从包含源代码的文件(它运行良好)到Interactive Interpreter。我得到了这个例外:
java.lang.IllegalArgumentException: != 0): event not found
at jline.console.ConsoleReader.expandEvents(ConsoleReader.java:426)
...
问题是!
字符(没有感叹号的方法效果很好)。
有没有办法让方法在REPL中工作?
答案 0 :(得分:1)
我无法使用原始安装解决此问题,但安装新版本的Scala有所帮助。也许,这是Fedora 17 rpm Scala软件包的问题。
答案 1 :(得分:0)
您可能错过了此实例:
https://issues.scala-lang.org/browse/SI-7650
但是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
而不是在2.11上崩溃:
scala> 1 != 2
java.lang.IllegalArgumentException: != 2: event not found