scala - 在 Either 中指定案例对象的类型
问题描述
如果我有一个对象如下:
case object Foo
我尝试创造这样的价值
Either[Foo, B]
我收到一个编译错误,提示找不到 Foo。但如果我这样做:
Either[Foo.type, B]
它编译。我的问题是这样做是否正确?
解决方案
每当您想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 在评论中提到的)
推荐阅读
- django - 在 Ubuntu VPS 上运行的 Django 应用程序:无法访问此站点
- nlp - Pytorch 掩码,如 Gluon npx.sequence_mask
- python-3.x - 使用字典中的引用替换字符串中的单词
- php - 有没有办法在 php 中获得最多购买的包?
- asp.net - 我无法使用非 80 端口的公共 IP 访问 IIS 网站
- python - 如何找到第三个“。” 在一个字符串中,然后改变它后面的字符的值
- c++ - 将标准输出捕获到 zip 并使用 CTRL-C 中断会产生损坏的 zip 文件
- javascript - 来自 v-for 的动态数据使用插槽显示在导入的模态中
- mongoose - 使用 FindByIdAndUpdate 提出请求
- css - 如果其他项目被删除,移动类不会应用于过渡组中的剩余项目