gpt4 book ai didi

kotlin - 在泛型中使用 Nothing 是一个好习惯吗?

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

就像在这个例子中:

sealed class Option<T>

object None : Option<Nothing>() // <-- like this

class Some<T> : Option<T>()

或者,如果这不是一个好的做法,我应该在这里使用什么?

是否有任何官方回应/文章?或者是否有任何论据表明这是一种好的做法?

我知道 Nothing被设计用作从不返回任何值的函数的返回值类型,所以我不确定将它用作泛型参数是否有效。

我知道有一个 article这表示您可以做到这一点,但我不确定我是否可以信任它。

以及 koptional的作者也使用它,但我不知道我是否可以相信它。

此外,它看起来像在 Scala 中 Option实现与此类似, None有型 Option[Nothing]和 Scala 的 Nothing类似于 Kotlin 的 Nothing .

最佳答案

我同意 @zsmb13's comment .使用 Nothing在泛型类型层次结构中是完全有效的,甚至比其他选项更有优势:

  • 一、 Nothing 作为任何其他类型的子类型嵌入到 Kotlin 类型系统中,因此它与 generics variance 配合得很好。 .例如,Option<Nothing>哪里可以通过Option<out Foo>是期待。
  • 其次,编译器将在 Nothing 之后执行控制流检查并检测不可达的代码。 - 当类型是静态已知时返回成员调用。

  • 另见: A Whirlwind Tour of the Kotlin Type Hierarchy

    关于kotlin - 在泛型中使用 Nothing 是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53049656/

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