首页 > 解决方案 > 在 Either 中指定案例对象的类型

问题描述

如果我有一个对象如下:

case object Foo

我尝试创造这样的价值

Either[Foo, B]

我收到一个编译错误,提示找不到 Foo。但如果我这样做:

Either[Foo.type, B]

它编译。我的问题是这样做是否正确?

标签: scalasingleton-type

解决方案


每当您想object在 Scala 中声明 an 的类型时,您必须将其声明为YourObject.type.

原因很简单,因为YourObject已经是instance在Scala.type中声明对象类型 ( Singleton )的方式也是如此。

这里有一个例子:

object YourObject

def doit(obj: YourObject.type) = {}

def doitEventually(obj: Option[YourObject.type]) = {}


doit(YourObject)
doitEventually(Some(YourObject))

我找不到相应的文档,所以也许有人可以帮忙。

规范在这里:单例类型(如 Mojo 在评论中提到的)


推荐阅读