如果我有如下对象: 然后我尝试创建一个像这样的值 我收到一个编译错误,说找不到Foo。但是如果我这样做: 它编译。我的问题是这样做是否正确? 答案 0 :(得分:2) 每当要在Scala中声明 原因很简单,因为 这里有个例子: 我找不到相应的文档,所以也许有人可以帮忙解决这个问题。 规范在这里:singleton-types(如Mojo在评论中提到的那样)case object Foo
Either[Foo, B]
Either[Foo.type, B]
1 个答案:
object
的类型时,都必须像YourObject.type
一样声明它。 YourObject
已经是实例。因此,.type
是您必须在 Scala 中声明对象类型( Singleton )的方式。object YourObject
def doit(obj: YourObject.type) = {}
def doitEventually(obj: Option[YourObject.type]) = {}
doit(YourObject)
doitEventually(Some(YourObject))