2013-11-22 40 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 
} 
相关问题