如果我有一个对象如下:
case object Foo
我尝试创造这样的值(value)
Either[Foo, B]
我收到一个编译错误,说找不到 Foo。但如果我这样做:
Either[Foo.type, B]
它编译。我的问题是这样做是否正确?
最佳答案
每当您想声明 object
的类型时在 Scala 中,你必须像 YourObject.type
一样声明它.
原因很简单,如YourObject
已经是 实例 .所以.type
是您必须在 中声明对象类型(单例)的方式斯卡拉 .
这里有一个例子:
object YourObject
def doit(obj: YourObject.type) = {}
def doitEventually(obj: Option[YourObject.type]) = {}
doit(YourObject)
doitEventually(Some(YourObject))
我找不到相应的文档,所以也许有人可以帮忙解决这个问题。
规范在这里:singleton-types (正如 Mojo 在评论中提到的)
关于scala - 在任一中指定 Case 对象的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59531680/