包含 bang 的方法在 REPL 中不起作用



我正在运行Scala2.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: != 0): event not found
   at jline.console.ConsoleReader.expandEvents(ConsoleReader.java:426) 
   ...

问题是!字符(没有感叹号的方法效果很好)。

有什么方法可以使该方法在REPL中工作吗?

您可能错过了这个实例:

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

我在最初的安装中无法解决这个问题,但安装Scala的新版本有所帮助。也许,这是Fedora 17 rpm Scala包的问题。

  • 相关错误
  • 带有"损坏"REPL的rpm包

最新更新