2

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

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

有什么方法可以使该方法在 REPL 中起作用?

4

2 回答 2

1

我无法通过原始安装解决这个问题,但安装新版本的 Scala 有所帮助。也许,它是 Fedora 17 rpm Scala 软件包的问题。

于 2013-07-13T18:41:33.513 回答
1

你可能错过了这个例子:

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
于 2013-07-14T02:45:25.730 回答