Swift 6.1 发布:优化任务组和成员可见性


Swift 6.1 已正式发布,此版本包括用于提高生产力的语言特性增强、诊断改进、软件包 traits,以及正在进行的改进编译时间工作。

下面介绍 Swift 6.1 中的两个亮点:任务组的改进和成员可见性的优化

Swift 6.1 中的任务组改进

在并发编程中,任务组是一个非常有用的工具。Swift 6.1 对任务组进行了优化,现在我们不再需要显式定义子任务的返回类型。编译器可以根据第一个任务自动推断所有子任务的返回类型,这让代码更加简洁。

例如,之前我们需要这样写:

await withTaskGroup(of: Int.self) { group in
  for _ in 1...10 {
    group.addTask {
      return Int.random(in1...10)
    }
  }
}

而在 Swift 6.1 中,我们可以这样写:

await withTaskGroup { group in
  for _ in 1...10 {
    group.addTask {
      return Int.random(in1...10)
    }
  }
}

这不仅减少了代码量,也让代码更具可读性。当然,所有子任务的返回类型仍需一致,否则编译器会报错。

Swift 6.1 中的导入成员可见性

Swift 6.1 引入了新的成员可见性模式,这让模块的使用更加直观。比如我们在两个模块中同时定义了对某个类的扩展,那么在使用时,编译器会选择哪个进行调用?

在 Swift 6.1 之前,编译器会报错,而在 Swift 6.1 中,编译器会根据导入的模块自动选择正确的扩展,避免了不必要的混淆。

例如,如果我们有两个模块 CurrencyKit 和 PurchaseParser,它们都对 Int 类型进行了扩展:

// CurrencyKit
func price() -> String {
    let formatter = NumberFormatter()
    formatter.numberStyle = .currency
    formatter.locale = Locale.current

    let amount = Double(self) / 100.0
    return formatter.string(from: NSNumber(value: amount)) ?? "$\(amount)"
}

// PurchaseParser
func price() -> String {
    let formatter = NumberFormatter()
    formatter.numberStyle = .currency
    formatter.locale = Locale.current

    let amount = Double(self) / 100.0
    return formatter.string(from: NSNumber(value: amount)) ?? "$\(amount)"
}

在 Swift 6.1 中,编译器会根据导入的模块自动选择正确的扩展,避免了不必要的混淆。

来源:https://mp.weixin.qq.com/s/SyDVGyevVNzhat-cmGU9NA

详细更新说明查看发布公告:https://www.swift.org/blog/swift-6.1-released/


相關推薦

2023-06-08

、watchOS 10 和 macOS Sonoma 在内的新系统。 硬件方面,苹果发布了 15 英寸的 MacBook Air、搭载 M2 Ultra 的 Mac Studio 以及 Mac Pro。此外,苹果还发布了其第一款 AR 眼镜 Apple Vision Pro。 本文对 WWDC23 全球开发者大会的内容作汇总: 苹

2023-12-19

勾股 DEV 是一款专为 IT 研发团队打造的项目管理与团队协作的系统工具,可以在线管理团队的工作、项目和任务,覆盖从需求提出到研发完成上线整个过程的项目协作。 勾股 DEV 通过 “项目(Project)” 的形式把成员、需求、

2022-12-12

排各种DevOps流程并分发到不同平台执行。 建木v2.6.1现已发布 主要更新:增强功能、修复若干已知bug enhancement: 与Git平台集成登录时可限定用户或组织 application.yml配置示例: # 未配置allow-login时,所有用户都能登录 # user

2023-08-23

近期取得的社区成就,并提出未来一年的工作重点。最新发布的“SSWG 2023 年度更新”公告指出,其 2023 年的工作重点将聚焦于“持续关注生态系统发展、采用结构化并发、扩充文档和指南、以及改进工具”等方面。 持续关注

2022-02-08

近日 Swift 社区发布公告,为了进一步提供 Swift 和 C++ 之间的互操性支持,他们成立了 Swift 和 C++ 互操性工作组,以作为 Swift 项目的一部分。这个新的工作组的职责就是负责开发和设计 C++ 和苹果开发的 Swift 之间的互操作性模型

2024-08-01

苹果公司发布了新的开源 Swift 工具库,以便开发者使用 Swift 实现同态加密 (swift-homomorphic-encryption),此举标志着苹果在数据隐私保护方面迈出了重要一步。 开发文档:https://developer.apple.com/documentation/sms_and_call_reporting/getting_up-

2022-11-08

WordPress 6.1 “Misha” 已发布,WordPress 6.1 包含许多增强功能和布局改进,下面介绍部分功能。 设计工具改进 对设计元素和块的控件进行了升级,使站点的布局和构建变得更加一致、完整和直观。 轻松管理菜单 导航块中有新

2023-09-16

Spring Framework 6.1 第 5 个(也是最后一个)里程碑版本已发布。 主要变化 支持一次性的@Scheduled任务 新的RestClient在参考文档有对应的章节,并针对可观测性进行了检测 升级至 Jetty 12 对@Async和@Scheduled调用的 Context Propag

2023-03-21

tile、Tex 等)或任何其他类型的纯文本。 CotEditor 4.5 正式发布,该版本更新内容如下: 系统要求: macOS 12 及以上版本 新功能: 更新代码片段功能,使其能够命名,改变顺序,并从菜单中执行 在文本菜单中增加插入

2023-10-27

勾股 DEV 是一款专为 IT 研发团队打造的项目管理与团队协作的系统工具,可以在线管理团队的工作、项目和任务,覆盖从需求提出到研发完成上线整个过程的项目协作。 勾股 DEV 通过 “项目(Project)” 的形式把成员、需求、

2022-09-13

Swift 5.7 现已发布,该版本包括对语言和标准库的主要添加、对编译器的增强以提供更好的开发人员体验、对 Swift 生态系统中的工具(包括 SourceKit-LSP 和 Swift 包管理器)的改进、改进的 Windows 支持等等。 语言和标准库 Swift 5.7

2025-03-22

过电子邮件消息提醒与桌面应用等。 Zulip Server 10.0 现已发布,一些更新亮点如下: 在 Zulip web app 中用字体大小和行距的灵活选项取代了紧凑模式设置。 重新设计了没有主题的频道消息的工作方式,使其更加美观,显示为

2022-11-25

wift 团队的一名工程师兼语言工作组成员 John McCall 在最新发布的一篇博客中介绍了 Swift 的 2023 年度计划。 “Swift 项目中有很多激动人心的工作正在进行,而且很难跟踪所有这些工作,因为它发生在许多不同的存储库、拉取请求

2024-06-29

解和试用! 来源:github.com/greenplum-db PostgreSQL 17 Beta1 发布 5月23日,PostgreSQL 17 的首个 Beta 版本发布,在查询和写入性能、分区和分布式工作负载、开发者体验、安全功能、备份与导出管理以及监控等多个方面进行了改进与