2013-09-23 26 views
5

編譯如果我在Eclipse中創建一個工作表斯卡拉如下:的toString上負數不Scala的工作表

object negative { 

    2.toString        //> res0: String = 2 

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

    // compile error 
    (-2).toString 
} 

最後一行將導致編譯錯誤:

';' expected but ')' found. illegal start of simple expression

然而,同樣的三行在正常的Scala源文件中編譯並運行良好。

爲什麼這在工作表中不起作用?

這是使用Eclipse 3.7.2,斯卡拉IDE 3.0.0.v-2_10,斯卡拉工作表0.1.4.v-2_10

[更新:這個問題最初使用toBinaryString,但問題甚至發生與toString,所以我已經簡化了它]

回答

1

這是一個錯誤。工作表主對象(第一個)中的代碼在執行之前進行檢測。在上述兩種情況下,檢測結果不是有效的Scala代碼。

但是,如果代碼位於主對象的頂層,這只是一個問題。如果代碼被移動到同一個文件中的一個函數或不同的對象,它可以正常工作。

+0

感謝您的解釋。我已經將它報告爲一個bug [這裏](https://github.com/scala-ide/scala-worksheet/issues/160) – DNA

+0

如果您只是將它包裝在主對象內的代碼塊中, 。 – DNA

1

Eclipse工作表是相當beta;例如,最後我檢查了一下,它無法處理一個函數上的裝飾(@tailrec)。

所以這可能是Eclipse中的一個錯誤或限制。畢竟,這個功能看起來很新,還有很多其他的錯誤。

0

(-2).toBinaryString 給我同樣的錯誤。

請注意,java.lang.Integer.toBinaryString(-2)工作得很好。