2013-11-22 49 views
3

我對scala很有新意。嘗試返回對象類型時遇到了麻煩。在scala中返回「object」

這是代碼。

它顯示「錯誤:未發現:A類型」

object A{} 

object B { 
    def getInstance() : A = { 
    return A 
    } 
} 

如果我做類似的那種用類實例的事情,它不會表現出任何問題。

class A{} 

object B { 
    def getInstance() : A = { 
    return new A 
    } 
} 

據我所知對象類型是類的單例實例。我在這裏錯過了什麼?

回答

4

編譯器抱怨找不到A型,因爲在你的情況下,A爲對象的名稱不是一個類型,使用A.type引用類型,像這樣:

object A 

object B { 
    def getInstance: A.type = A 
} 
+0

硬是喜歡用類型推斷來添加,你實際上可以省略返回類型並且只寫'def getInstance = A' – NIA

3

因爲object是單身人士是不定義一個type,而是定義一個值。

如果你想看看相當於Java中的,使用Scala的object產生:但是

A$ class // 
A$.MODULE$ // singleton instance definition 

type被屏蔽,並且可以通過A.type訪問。

在Scala中使用return也不是必需的。塊中的最後一個語句位置被自動解釋爲return值。

class A{} 

object B { 
    def getInstance() : A = new A 
} 
相關問題