gpt4 book ai didi

Scala:将类型放在继承树的底部

转载 作者:行者123 更新时间:2023-12-02 03:35:00 24 4
gpt4 key购买 nike

Scala 定义了一个名为 Nothing 的类型那是所有类型的子类型。是否可以定义我们自己的“底层类型”,它应该位于从给定父类(super class)型扩展的继承树的底部?

例如,假设我有一些类型 Foo ,我想说 Xyzzy应该在 Foo 的底部的继承树——换句话说,它应该继承任何继承自 Foo 的东西。如果我们引入一个新类型 Bar , 和 Bar <: Foo , 然后 Xyzzy <: Bar .我基本上是在寻找一种方式来表达 class Xyzzy isBottom Foo { ... } .有什么办法可以直接达到这个效果,或者间接达到这个效果吗?

最佳答案

有可能接近您想要做的想法。这不是继承链中所有类型的通用“底层”类型。相反,它是特定于使用泛型的特征的底层类型。您需要在继承结构中的类型定义中重用 Nothing。查看 List[_] 以了解他们如何定义 Nil:

case class ::[A](value: A, next: List[A]) extends List[A]
case object Nil extends List[Nothing]

因此,Nil 是所有 AList[A],因为列表的类型参数定义为 List[ +A].

关于Scala:将类型放在继承树的底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24066364/

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