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 Player: Codable, Equatable {}
import Foundation
let encoder = JSONEncoder()
try encoder.encode(player)
print(player)
// Prints "Player(name: "Tomas", highScore: 50, history: [50])”
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
最初构思时,我们就希望 Swift 实现快速运行的效果。利用出色的高性能 LLVM 编译器技术,Swift 代码会转换为经过优化的、可充分利用现代硬件的机器代码。此外,语法和标准资料库也进行了调整,使最浅显的编码方式也能有最佳表现,无论它是在你腕上的手表上运行,还是在集群服务器之间运行。
Swift 是在 C、C++ 和 Objective-C 语言的基础上开发的全新编程语言。它包含诸如类型、流控制和运算符等底层基元。此外,它还提供面向对象的特性,例如类、协议和泛型。
Swift 能为你打开通往编程世界的大门。事实上,我们的设计初衷也是希望它能成为任何人的第一门编程语言——无论你是在求学阶段,还是准备开拓全新的职业生涯。对于教育工作者而言,Apple 编写了免费的课程,帮助他们在课堂内外教授 Swift。首次学习编程的用户可以下载 Swift Playgrounds,这是一款能让你的 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 Playgrounds 类似,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,让你能轻松地采用这些文件。