如果我在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也会出现问题,所以我简化了它]
答案 0 :(得分:1)
Eclipse工作表非常有用;例如,我检查过,它无法处理函数上的@tailrec
装饰。
所以这很可能是Eclipse中的一个bug或限制。毕竟,这个功能似乎很新,还有很多其他的错误。
答案 1 :(得分:1)
这是一个错误。工作表的主对象(第一个)中的代码在执行之前被检测。在上面提到的2个案例中,检测结果不是有效的Scala代码。
但如果代码位于主对象的顶层,那么这只是一个问题。如果代码被移动到同一文件中的函数或不同的对象,它可以正常工作。
答案 2 :(得分:0)
(-2).toBinaryString
给我同样的错误。
请注意java.lang.Integer.toBinaryString(-2)
效果很好。