Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 方法包含';I don’我不工作_Scala_Read Eval Print Loop - Fatal编程技术网

Scala 方法包含';I don’我不工作

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: !=

我正在运行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中工作吗?

我在最初的安装中无法克服这个问题,但是安装新版本的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