Swift
一种强大且易学的编程语言。
Swift 是一种强大直观的编程语言,适用于所有 Apple 平台。Swift 语法简洁但表现力强,更包含了深受喜爱的现代功能,可轻松上手使用。Swift 代码从设计上保证安全,并能开发出运行快如闪电的软件。
Swift 是一种强大直观的编程语言,适用于所有 Apple 平台。Swift 语法简洁但表现力强,更包含了深受喜爱的现代功能,可轻松上手使用。Swift 代码从设计上保证安全,并能开发出运行快如闪电的软件。
Swift 6 提供了一种新的可选语言模式,可以在编译时分析代码并诊断可能的数据争用,让正确编写并发代码变得更加简单。这个版本还进一步增强了并发和泛型,并对使用语言服务器协议的源代码编辑器提供更好的支持。
Swift 是编程语言的最新研究成果,融合了 Apple 数十年来构建运行于数十亿台设备的软件所积累的丰富经验。命名参数以简洁的语法表示,让你能轻松地阅读和维护以 Swift 编写的 API。你甚至无需键入分号。推断类型让代码更为简洁且不易出���;而模块则消除了头文件,改为提供命名空间。为了给多国语言和表情符号提供最佳支持,字符串会保持 Unicode 正确性,并使用基于 UTF-8 的编码来优化各种用例中的性能。内存采用严谨的确定性引用计数来自动管理,最大程度地降低了内存使用量,且不会产生垃圾回收开销。你甚至可以使用简单的内置关键词编写并发代码,这些关键词定义异步行为,使代码更清晰易读,更不易出错。
struct Player {
var name: String
var highScore: Int = 0
var history: [Int] = []
init(_ name: String) {
self.name = name
}
}
var player = Player("Tomas")
使用现代、简明的语法声明新类型。为实例属性提供默认值,并定义自定构造���。
extension Player {
mutating func updateScore(_ newScore: Int) {
history.append(newScore)
if highScore < newScore {
print("\(newScore)! A new high score for \(name)! 🎉")
highScore = newScore
}
}
}
player.updateScore(50)
// Prints "50! A new high score for Tomas! 🎉"
// player.highScore == 50
使用 extension 向现有类型添加功能,并利用自定字符串转译减少样板代码。
extension Player: Codable, Equatable {}
import Foundation
let encoder = JSONEncoder()
try encoder.encode(player)
print(player)
// Prints "Player(name: "Tomas", highScore: 50, history: [50])”
充分利用强大的语言功能,以便快速扩展自定义功能,如自动 JSON 编码和解码。
let players = getPlayers()
// Sort players, with best high scores first
let ranked = players.sorted(by: { player1, player2 in
player1.highScore > player2.highScore
})
// Create an array with only the players’ names
let rankedNames = ranked.map { $0.name }
// ["Erin", "Rosana", "Tomas"]
使用简化闭包执行强大的自定转换。
正是这些富有前瞻性的概念,成就了这种有趣又易用的编程语言。
Swift 还有许多其他功能,可以让你的代码更富表现力:
Swift 可避免全部类型的不安全代码。变量在使用前始终会先进行初始化,数组和整数将进行溢出检查,内存将实现自动管理,潜在的数据争用也将能在编译时被发现。语法经过调整,让你可轻松定义目标意图。例如,只需三个字符的关键词就可定义变量 (var) 或常量 (let)。此外,Swift 充分利用值类型,特别是针对 Array 和 Dictionary 等常用类型。这让你在拷贝这种类型的内容时,能放心它不会在其他位置被修改。
默认情况下,Swift 对象不能定为 nil — 这在另一方面保证了 Swift 的安全性。实际上,Swift 编译器会在你尝试创建或使用 nil 对象时显示编译时错误,阻止你继续操作。这使得代码编写变得更简洁、更安全,并且可以防止 App 非常常见的一类运行时崩溃。但是,在某些情况下,运用 nil 是适当合理的。针对这类情况,Swift 提供了一项创新功能,称为“可选类型”。可选类型可以包含 nil,但是 Swift 语法可确保你能够使用 ? 语法来安全地处理 nil。使用该语法,等于向编译器表明你理解此行为并将安全地进行处理。
extension Collection where Element == Player {
// Returns the highest score of all the players,
// or `nil` if the collection is empty.
func highestScoringPlayer() -> Player? {
return self.max(by: { $0.highScore < $1.highScore })
}
}
函数可能返回一个实例也可能不返回时,可以使用可选类型。
if let bestPlayer = players.highestScoringPlayer() {
recordHolder = """
The record holder is \(bestPlayer.name),\
with a high score of \(bestPlayer.highScore)!
"""
} else {
recordHolder = "No games have been played yet."
}
print(recordHolder)
// The record holder is Erin, with a high score of 271!
let highestScore = players.highestScoringPlayer()?.highScore ?? 0
// highestScore == 271
凭借可选类型绑定、可选链和 nil 合并等功能,你可以安全、高效地使用可选类型值。
最初构思时,我们就希望 Swift 实现快速运行的效果。利用出色的高性能 LLVM 编译器技术,Swift 代码会转换为经过优化的、可充分利用现代硬件的机器代码。此外,语法和标准资料库也进行了调整,使最浅显的编码方式也能有最佳表现,无论它是在你腕上的手表上运行,还是在集群服务器之间运行。
Swift 是在 C、C++ 和 Objective-C 语言的基础上开发的全新编程语言。它包含诸如类型、流控制和运算符等底层基元。此外,它还提供面向对象的特性,例如类、协议和泛型。
Swift 能为你打开通往编程世界的大门。事实上,我们的设计初衷也���希望它能成为任何人的第一门编程语言——无论你是在求学阶段,还是准备开拓全新的职业生涯。对于教育工作者而言,Apple 编写了免费的课程,帮助他们在课堂内外教授 Swift。首次学习编程的用户可以下载 Swift Playground,这是一款能让你的 Swift 代码入门学习充满互动和乐趣的 App,可在 iPad 和 Mac 上运行。
有志于此的 App 开发者可以访问免费的课程,学习如何在 Xcode 中构建他们的首个 App。我们在世界各地的 Apple Store 商店都提供有“Today at Apple 编程与 App”课程,你可以在这些课程中体验 Swift 代码的实际操作。
Swift 以开源形式在 Swift.org 上开发而成,其源代码、bug 管理、论坛和常规开发版本将对所有人公开。在这个由众多开发者组成的广泛社区中,Apple 内部员工与成百上千位外部贡献者携手合作,让 Swift 愈加出色。该社区还会提供更多博客、���客、会议和聚会,让社区中的开发者分享有关如何充分利用 Swift 的经验。
Swift 已能够支持所有 Apple 平台、Linux 以及 Windows,社区成员正积极地努力将 Swift 移植到更多平台上。借助 SourceKit-LSP,社区成员已将 Swift 支持集成到各种开发者工具中。我们非常期待看到 Swift 以更多元的方式构建更安全、更快速的软件,同时也让编程变得更有趣。
Swift 还适用于一系列新的现代化服务器应用程序。它非常适合用于需要运行时安全、编译性能和较小内存占用空间的服务器 App。为了把握使用 Swift 开发和部署服务器 App 的方向,Swift 社区成立了 Swift Server 工作组。该工作组为此而推出的首个产品为 SwiftNIO,这是一款跨平台的异步事件驱动型网络应用程序框架,适用于高性能协议服务器和客户端。它是其他面向服务器的工具和技术(包括日志记录、指标和数据库驱动程序)的基础。
要进一步了解 Swift 开源社区和 Swift Server 工作组,请访问 Swift.org。
与 iPad 和 Mac 上的 Swift Playground 类似,Xcode 中的 Playground 让编写 Swift 代码变得非常简单有趣。键入一行代码,就能马上看到结果。你可以从代码处快速查看结果,或将结果直接固定在这行代码下方。结果视图可以显示图形、结果列表或某个值随时间而变化的图形。你可以打开“时间轴助理”来观看复杂的视图演变和动画效果 (非常适合用于试验新的 UI 代码),或是在你编码时播放 SpriteKit 动画场景。在 Playground 中优化好代码后,即可将代码移到你的项目中。当你在终端或 Xcode 的 LLDB 调试控制台中使用 Swift 时,它也具有互动性。
Swift Package Manager 是一个跨平台工具,可用于构建、运行、测试和打包 Swift 资料库和可执行文件。Swift 软件包是向 Swift 社区分发资料库和源代码的最佳方法。软件包的配置采用 Swift 编���,可以让你轻松配置目标、声明产品和管理软件包依赖项。Swift 软件包还可以包含自定命令,用于帮助构建项目并提供其他工具。实际上,Swift Package Manager 本身就采用 Swift 构建,也作为软件包内建在 Swift 开源项目中。
你可以立即使用 Swift 创建全新的应用程序,或开始使用 Swift 代码在你的 App 中实现新的特性和功能。Swift 代码可与你现有的 Objective-C 和 C++ 文件在同一个项目中共存,并可访问 Objective-C 和 C++ API,让你能轻松地采用这些文件。