加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift中的底部类型

发布时间:2020-12-14 05:30:08 所属栏目:百科 来源:网络整理
导读:我想知道 Swift语言中是否有 bottom type. 为了预先消除任何混淆,unit type与底部类型不同,因为我们将它作为Void或()在swift中.也是顶级类型. 令我惊讶的是,我发现最接近的是fatalError()形式的@noreturn属性,因为我们大多可以通过这个函数来符合大多数给定
我想知道 Swift语言中是否有 bottom type.

为了预先消除任何混淆,unit type与底部类型不同,因为我们将它作为Void或()在swift中.也是顶级类型.

令我惊讶的是,我发现最接近的是fatalError()形式的@noreturn属性,因为我们大多可以通过这个函数来符合大多数给定的任意类型.

但是,当然,这是不完整的,因此是真正的底部类型的不良替代品,例如,Scala中的Nothing,Haskell中的未定义或Java中的null.

那么,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!")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读