2015-09-08 82 views
0

我最近開始用一個intellij ide的scala編程。在運行帶有類或特徵的工作表時,我只是獲得了定義的類類名。該類內的輸出不可見。我正在與SBT和Java 8。我斯卡拉甚至試圖在Eclipse上運行相同的工作仍然得到同樣的輸出在intellij ide和eclipse上運行scala類

abstract class Base { 
    def foo = 1 

    def bar: Int 
} 

class Sub extends Base { 

    def bar = 3 
} 

defined class Base 

defined class Sub 
+1

請發佈您的代碼示例,或者只是使用'case class'而不是'class'來獲得更好的面向內容的輸出 – Odomontois

+0

在這裏完成@Odomontois –

+0

您還期望其他什麼輸出? – Mifeet

回答

1

在IDE中的工作表的工作方式相同爲Scala REPL

REPL如何工作?它需要每個表達式或語句(通常是一行),對其進行評估並打印表達式或副作用的值。如果您定義了一個類,副作用是該類爲compiled from Scala到Java字節碼並可供使用。 REPL讓你知道這個副作用defined class Base。如果你放入一個表達式,它將表達式從Scala轉換爲字節碼,並對其進行評估並打印結果。

如果你把

class Foo { println("x") } 

defined class Foo。如果你現在把在

new Foo() 

工作表將打印x和表達new Foo()的值(調用的Foo構造的副作用):res0: Foo = [email protected]res0=部分通知您REPL自動執行的一件事 - 它將表達式分配給一個新的唯一變量res0,以便稍後使用它。


現在,爲什麼不能像您期望的那樣打印bar=3?這意味着您希望工作表將類的某種定義打印到輸出中。這意味着將編譯的Scala代碼翻譯回Scala語言,但是如何在Scala中編寫相同的類定義有許多方法!它不會以這種方式工作,並且在輸出中再次重複類定義沒有意義。

+0

謝謝!我被卡住了這麼久! –

相關問題