gpt4 book ai didi

斯卡拉 : Type Nothing with User defined classes

转载 作者:行者123 更新时间:2023-12-02 08:13:04 26 4
gpt4 key购买 nike

在 scala 中,Nothing 是所有其他类型的子类型。

scala> class A {}
defined class A

scala> def x[T >: Nothing](t: T): Unit = {}
x: [T](t: T)Unit

scala> x(new A)

当我们创建任意类时,它会自动成为Nothing

的父类(super class)型
  1. 如何在 Scala 中维护此属性?编译器是否使 Nothing 在编译时扩展所有其他类?
  2. 像这样,是否可以将自定义类 X 定义为一组类(比如集合 s)的子类型,而无需生成 Xs 中的所有类扩展? (例如:类 X 是包 com.myproject.models 中所有类的子类型)

请分享您的想法。

最佳答案

How this property is maintained in scala? Does the compiler makes Nothing extend every other class at compile time?

Nothing 不是用实际类实现的,它是编译器的纯产物。 Nothing 类型的实际处理可以在编译器内部的几个地方被粗化为硬编码 Nothing,例如,isSubType(t1: Type, t2: Type) : Booleant1 == Nothing 时无条件为真。

Like this way, is it possible to define a custom class X as a subtype of a set of classes(say set s) without making X extend from all the classes in the s?

没有。

关于斯卡拉 : Type Nothing with User defined classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44389999/

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