0Pricing
Swift Academy · 课时

Result<Success, Failure> 基础

创建 Result 值并进行模式匹配,以明确处理错误。

Result<Success, Failure> 基础 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

欢迎

`Result` 是 Swift 枚举,包含两个情况——`.success` 和 `.failure`——可以在不使用抛出与捕获语法的情况下进行显式错误处理。

声明结果类型

```swift func divide(_ a: Double, by b: Double) -> Result { guard b != 0 else { return .failure(.divisionByZero) } return .success(a / b) } enum DivisionError: Error { case divisionByZero } ```

使用结果类型

```swift switch divide(10, by: 2) { case .success(let value): print("Result: \(value)") case .failure(let err): print("Error: \(err)") } ```

失败时抛出错误

```swift let result = divide(10, by: 0) do { let value = try result.get() // throws DivisionError } catch { print(error) } ```

存储结果

```swift var cache: [URL: Result] = [:] cache[url] = .success(data) cache[url] = .failure(URLError(.notConnectedToInternet)) ```

异步 API 中的结果类型

```swift func fetch(url: URL, completion: @escaping (Result) -> Void) { URLSession.shared.dataTask(with: url) { data, _, error in if let data { completion(.success(data)) } else { completion(.failure(error ?? URLError(.unknown))) } }.resume() } ```

使用 if case 进行模式匹配

```swift if case .success(let data) = result { process(data) } if case .failure(let err) = result { handle(err) } ```

成功与失败属性

```swift let r: Result = .success(42) print(r.success) // Optional(42) — non-nil on success print(r.failure) // nil ```

从抛出错误的代码初始化

```swift let result = Result { try JSONDecoder().decode(User.self, from: data) } // .success(user) or .failure(decodingError) ```

比较结果

```swift let a: Result = .success(42) let b: Result = .success(42) // Cannot == directly unless Success/Failure are Equatable ```

快速检查

当 Result 为 `.failure` 时,`result.get()` 会做什么?

回顾

要点回顾: • `Result`——无需使用抛出错误即可显式表示成功或失败 • `.success(value)` / `.failure(error)`——两种情况 • `.get()` 在失败时抛出错误 • `Result { try ... }` 可以桥接会抛出错误的代码 • 适合存储或传递延迟处理的结果 下一节:结果类型上的映射与 flatMap。

常见问题解答

「Result<Success, Failure> 基础」课时是免费的吗?

是的 — 「Result<Success, Failure> 基础」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「Result<Success, Failure> 基础」这节课中我会学到什么?

创建 Result 值并进行模式匹配,以明确处理错误。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「Result<Success, Failure> 基础」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Result 基础
  2. Result 上的 map 与 flatMap
  3. 使用 LocalizedError 自定义错误类型
  4. 将 Result 衔接到 async/await
← 返回 Swift Academy