前言

在 199 期的 Swift 周报中,负责人 Kristaps Grinbergs 向一切读者宣布约请,内容如下:

我们好! 我真心期望你们享受完感恩节,而且能够和你所爱的人一起度过这个假期。 也许你们中的一些人乃至玩过钱德勒发明的在 6 分钟内命名一切 50 个州的游戏。

感恩节之后的这段时刻对 Swift 团队来说收成颇丰,今天有许多活动要评论。 但在咱们开端之前,我想利用这个时机说下一期将是我的终究一期,也许是这个项目的终究一期。 假如有人有爱好顶替我的职责,请告诉我。 我很想看到这个项目在我离开后继续存在并蓬勃发展。

为了 Swift 社区周报持续安稳的发布更新,咱们期望约请 Swift 爱好者参加周报编辑,一起约请资助商对咱们平台资助支撑。

新闻和社区

Keith Smiley 共享了有关 Swift 5.5 的更新及其精选分类进程。

John Sundell 写了一篇文章,探讨如何运用 countisEmpty 来查看调集是否包含任意元素。

Will Lisac 在推特上表明,适用于 Raspberry Pi 的 Swift 5.5 Docker 镜像 现已可用。

Feli 创造的精彩插图。 她在各种会议上的绘画著作值得一看。

Max Desiatov 宣布 SwiftWasm 5.5.0 现已可用。

赞同的提案

SE-0328 Structural opaque result 类型已被接受并进行了修改。

在审阅期间,主要评论了两个方面:
– 可选类型的拼写。 提案将其保存为 (some P)?,尽管 some P? 更简练,可能被作为语法糖。 中心团队更赞同这种保守的办法,稍后能够在对该功用有更多经验后重新考虑。
– 当返回函数类型即 f() -> (some P) -> Void 时,在“消费”而不是“出产”方位运用 somesome 关键字的其他用处正在评论中,而且忧虑与某些未来特性存在潜在抵触。 由于在消费方位运用 opaque result 类型不是特别有用(这种函数在一切情况下都是不行调用的),因而中心团队决定将这种运用子集化,现在仅在返回函数类型的返回值中要求 opaque result 类型。

正在检查的提案

SE-0332:包管理器指令插件正在检查中。

SE-0303 引入了在 SwiftPM 中界说构建东西插件的才能,答应在构建进程中主动调用自界说东西。 该提案扩展了该插件支撑以答应界说自界说指令插件——用户能够直接从 SwiftPM CLI 或从支撑 Swift 包的 IDE 调用的插件,以便对其包履行自界说操作。

SE-0331: 从不安全的指针类型中删除 Sendable 一致性正在检查中。

SE-0302 引入了 Sendable 协议,包含对各种语言结构的 Sendable 要求,各种规范库类型对 Sendable 的一致性,以及非公共类型隐式契合 Sendable 的推理规矩。

Sendable 的运用经验标明,这种表述是不必要的风险,而且会对隐式一致性产生意想不到的负面影响。

SE-0333:正在检查 withMemoryRebound 的扩展可用性。

函数 withMemoryRebound(to:capacity:_ body:) 履行一个闭包,一起将一定范围的内存临时绑定到与被调用者绑定的类型不同的类型。 咱们主张解除 withMemoryRebound 的一些明显约束,并答应重新绑定到更大的类型集,以及从原始内存指针和缓冲区重新绑定。

请注意,此提案与 SE-0334 一起运转,这也与不安全的指针可用性有关。

SE-0334:正在检查指针可用性改善。

该提案为 UnsafePointer 及其 MutableRaw 变量引入了一些质的改善。

  1. 增加一个 API 以获取一个 UnsafeRawPointer 实例,该实例从其起点前进到给定的对齐方式。
  2. 在给定 UnsafePointer<T> 的情况下,增加 API 以获取指向聚合 T存储特点的指针。
  3. 增加比较任意两种类型的指针的才能。

请注意,此提案与 SE-0333 一起运转,这也与不安全的指针可用性有关。

Swift 论坛

I

Ethan Kusters 开端评论在静态保管环境中支撑保管 DocC 档案。

这篇文章评论了 Swift-DocC 和 Swift-DocC-Render 的增强功用,这将答应开发人员构建无需自界说路由即可保管的 DocC 档案。 这是专门为使 DocC 能够在其他静态保管环境中运用而规划的,最明显的是 GitHub Pages。

此更改旨在作为处理急迫需求的快速处理方案,并供给遍及的好处。 但请注意,咱们已经听到社区的反应,他们期望 Swift-DocC 直接宣布静态 HTML,而且此功用在优先级列表中居高不下。

II

Sam Deane 提出了一个主意来实现一个默许的可初始化协议。

Kristaps Grinbergs 遇到过工厂类型的情况,终究拟定了一个协议来表明“能够运用不带参数的默许 init 构造这种类型”。

Kristaps Grinbergs 发现他感到惊讶: (a) 这个协议是否已经存在于规范库中的某个地方,以及 (b) 假如 init() 存在,Swift 是否能够主动使任何类型契合它。

III

一个好的提示, 库 Swift Numerics 确实存在。

Guillaume Lessard 提出了使缓冲区切片更有用的提案,尤其是在缓冲区的部分初始化方面。

UnsafeBufferPointer 系列的子序列具有 UnsafeBufferPointer 的一切 [Mutable]Collection API,但没有它们特定于缓冲区的 API。 这使得缓冲区的部分初始化以及其他使命变得困难。

引荐博文

LeetCode 系列

该系列的文章中有 5 篇 Top 100 高频题

LeetCode – #1 两数之和

难度水平:简单,公司面试运用频率如下:

公司 频率
Amazon ★★★★★★
Facebook ★★★★★
Airbnb ★★★★★
Microsoft ★★★★★
LinkedIn ★★★★

LeetCode – #2 两数相加

难度水平:中等,公司面试运用频率如下:

公司 频率
Microsoft ★★★★
Amazon ★★
Airbnb ★★

LeetCode – #3 最长未重复子字符串

难度水平:中等,公司面试运用频率如下:

公司 频率
Amazon ★★

LeetCode – #4 求两个有序数组的中间值

难度水平:困难

LeetCode – #5 求最长的镜像字符串

难度水平:中等,公司面试运用频率如下:

公司 频率
Amazon ★★

难度水平:简单、中等、困难
公司运用频率:1 ~ 6 颗 ★

关于咱们

Swift社区是由 Swift 爱好者一起维护的公益安排,咱们在国内以微信公众号的运营为主,咱们会共享以 Swift实战SwiftUlSwift根底为中心的技术内容,也收拾收集优秀的学习资料。

欢迎重视公众号:Swift社区,后台点击进群,能够进入咱们社区的各种交流评论群。期望咱们Swift社区是我们在网络空间中的另一份一起的归属。

特别感谢 Swift社区 编辑部的每一位编辑,感谢我们的辛苦支付,为 Swift社区 供给优质内容,为 Swift 语言的发展贡献自己的力气,排名不分先后:

  • 张安宇@微软
  • 倪瑶@Trip.com
  • 戴铭@快手
  • 展菲@ESP
  • 杜鑫瑶@新浪

周报库房:github.com/SwiftCommun… 文章中外引链接较多,能够点击 阅览原文 愈加方便阅览。