gpt4 book ai didi

swift - Swift 中的底部类型

转载 作者:IT王子 更新时间:2023-10-29 05:53:22 26 4
gpt4 key购买 nike

我想知道是否有 bottom type在 Swift 语言中。

为了事先消除任何混淆,unit type与底部类型不同,因为我们将其称为 Void()在 swift 。还有 Any顶级类型

令人惊讶的是,我发现最接近的是 @noreturn fatalError() 形式的属性因为我们可以 moSTLy 传递此函数以符合 most 给定的任意类型。

但是,当然,这是不完整的,因此不能替代真正的底部类型,例如 Nothing在 Scala 中,undefined在 Haskell 中,甚至是 null在 Java 中。

那么,Swift语言中有底层类型吗?

最佳答案

事实证明 swift 中没有 Bottom Type,但我们可以通过使用 @noreturn 属性和泛型的一些 hack 来模拟它的一般行为,如 this talk 中所述。 .

func undefined<A>(_ message: String = "") -> A {
fatalError("Not Implemented: \(message)")
}

然后我们可以用它来标记代码中尚未实现的部分以传递编译器错误:

func someComplexFunction<U: User>(u: U) -> U {
return undefined("Do this after creating user")
}

或者证明我们代码中的一些不变性:

let array = ["hello", "world"]
let hello: String = array.first ?? undefined("This is impossible!")

关于swift - Swift 中的底部类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34150907/

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