gpt4 book ai didi

scala - Scala 单例在类型层次结构中的位置

转载 作者:行者123 更新时间:2023-12-04 05:07:39 26 4
gpt4 key购买 nike

给定一个在 Scala 中定义的单例对象...

object Foo;

有一个类型 Foo.type,它表示该对象唯一符合的类型。酷!

但我对这种类型还有什么了解。什么?我可以说 Foo.type 是 AnyRef 的子类型。酷!
import scala.reflect.runtime.universe.TypeTag
val fooTypeTypeTag = implicitly[TypeTag[Foo.type]]
val anyRefTypeTag = implicitly[TypeTag[AnyRef]]
fooTypeTypeTag.tpe <:< anyRefTypeTag.tpe // true
fooTypeTypeTag.tpe =:= anyRefTypeTag.tpe // false

但是无论如何要知道 Foo.type 是否是 AnyRef 的直接后代?也许,所有单例对象(通过“对象XXX”定义的东西)都符合某种通用类型吗?它 isn't scala.Singleton ,但似乎很自然,所有类型 Foo.type、Bar.type 等都应该表达一些共同的特征。这样的东西存在吗?

在完成了为 Foo.type 找到 TypeTag 的工作之后,是否有一些方法可以使用 Scala 反射来探索 Foo.type 的父类(super class)型和特征?显然,这样的事情不可能是详尽无遗的,例如,潜在的鸭子类型会出现组合爆炸,但无法通过反射爬上声明或内置的继承层次结构似乎仍然很奇怪。

谢谢!

最佳答案

单例之间没有共同特征,但它们不一定是AnyRef 的直接后代。 , 因为 object可以扩展 classtrait .

关于scala - Scala 单例在类型层次结构中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15318586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com