在负数上的toString不会在Scala工作表中编译

时间:2013-09-23 14:24:13

标签: scala scala-ide

如果我在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

[更新:这个问题最初用于BinaryString,但即使使用toString也会出现问题,所以我简化了它]

3 个答案:

答案 0 :(得分:1)

Eclipse工作表非常有用;例如,我检查过,它无法处理函数上的@tailrec装饰。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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