我想知道Swift语言中是否有bottom type。
为了避免混淆,unit type与swift中的Void
或()
是不同的类型,Any
也是top type。
令人惊讶的是,我发现最接近的是fatalError()
形式的@noreturn
属性,因为我们可以 * 大多数 * 传递此函数以符合 * 大多数 * 给定的任意类型。
但是,当然,这是不完整的,因此对于真正的底层类型来说是一个糟糕的替代,例如Scala中的Nothing
、Haskell中的undefined
,甚至Java中的null
。
那么,Swift语言中是否存在底部类型?
2条答案
按热度按时间2lpgd9681#
事实证明swift中没有Bottom Type,但是我们可以通过
@noreturn
属性和泛型来模拟它的一般行为,如this talk中所解释的。然后,我们可以使用它来标记代码中尚未实现的部分,以传递编译器错误:
或者证明我们代码中的一些不变性:
6ie5vjzr2#
请参阅Never
基本上,你可以