5

如果我在 Eclipse 中创建一个 Scala 工作表,如下所示:

object negative {

  2.toString                                //> res0: String = 2

  (2).toString                              //> res1: String = 2

  // compile error
  (-2).toString
}

最后一行导致编译错误:

';' 预期但 ')' 找到。简单表达式的非法开头

然而,同样的三行代码在普通的 Scala 源文件中编译和运行良好。

为什么这在工作表中不起作用?

这是使用 Eclipse 3.7.2、Scala IDE 3.0.0.v-2_10、Scala Worksheet 0.1.4.v-2_10

[更新:这个问题本来是用toBinaryString,但是用toString也会出现问题,所以我把它简化了]

4

3 回答 3

1

这是一个错误。工作表的主要对象(第一个)中的代码在执行之前被检测。在提到的 2 种情况下,检测的结果不是有效的 Scala 代码。

但如果代码位于主对象的顶层,这只是一个问题。如果将代码移动到同一文件中的函数或不同对象,则可以正常工作。

于 2013-09-25T08:38:28.440 回答
1

Eclipse 工作表还处于测试阶段;例如,我上次检查时,它无法处理@tailrec函数上的装饰。

所以这很可能是 Eclipse 中的一个错误或限制。毕竟,该功能似乎很新,并且还有许多其他错误。

于 2013-09-23T15:05:10.290 回答
0

(-2).toBinaryString 给我同样的错误。

请注意,java.lang.Integer.toBinaryString(-2)效果很好。

于 2013-09-23T22:50:38.090 回答