|
1 |
| -# 拓展 |
| 1 | +# 扩展 |
2 | 2 |
|
3 | 3 | 为现有类型添加功能。
|
4 | 4 |
|
5 |
| -*扩展*可以给一个现有的类,结构体,枚举,或协议添加新的功能。 |
| 5 | +**扩展(Extensions)**用于为现有的类、结构体、枚举或协议类型添加新功能。 |
6 | 6 | 这包括了扩展那些您无法访问原始源代码的类型的能力(即*追溯建模*)。
|
7 | 7 | 扩展和 Objective-C 的分类很相似。
|
8 | 8 | (与 Objective-C 分类不同的是,Swift 扩展是没有名字的。)
|
@@ -218,10 +218,11 @@ print("A marathon is \(aMarathon) meters long")
|
218 | 218 | ## 构造器
|
219 | 219 |
|
220 | 220 | 扩展可以为现有类型添加新的构造器。
|
221 |
| -这使你可以扩展其他类型以接受你自己的自定义类型作为初始化器参数, |
| 221 | +这使你可以扩展其他类型以接受你自己的自定义类型作为构造器参数, |
222 | 222 | 或提供类型的原始实现中未包含的其他构造选项。
|
223 | 223 |
|
224 |
| -扩展可以为一个类添加新的便利构造器,但是它们不能为一个类添加新的指定构造器或析构器。 |
| 224 | +扩展可以为一个类添加新的便利构造器(convenience initializer), |
| 225 | +但是它们不能为一个类添加新的指定构造器(designated initializer)或析构器(deinitializer)。 |
225 | 226 | 指定构造器和析构器必须始终由类的原始实现提供。
|
226 | 227 |
|
227 | 228 | 如果你使用扩展为一个值类型添加构造器,并且该值类型提供了所有存储属性的默认值,
|
@@ -391,13 +392,13 @@ extension Int {
|
391 | 392 | ```
|
392 | 393 | -->
|
393 | 394 |
|
394 |
| -### 可变实例方法 |
| 395 | +### 变值实例方法 |
395 | 396 |
|
396 | 397 | 通过扩展添加的实例方法同样也可以修改(modify)(或 *改变(mutating)*)实例本身。
|
397 | 398 | 修改 `self` 或其属性的结构体和枚举方法,必须将实例方法标记为 `mutating`,
|
398 |
| -就像原始实现中的修改方法一样。<!-- FIXME: 这里没想好 `mutating methods` 怎么翻译比较好> |
| 399 | +就像原始实现中的变值方法(mutating methods)一样。 |
399 | 400 |
|
400 |
| -下面的示例为 Swift 的 `Int` 类型添加了一个新的修改方法 `square`,它可以将原始值平方: |
| 401 | +下面的示例为 Swift 的 `Int` 类型添加了一个新的变值方法 `square`,它可以计算原始值的平方: |
401 | 402 |
|
402 | 403 | ```swift
|
403 | 404 | extension Int {
|
@@ -428,11 +429,6 @@ someInt.square()
|
428 | 429 |
|
429 | 430 | ## 下标
|
430 | 431 |
|
431 |
| -Extensions can add new subscripts to an existing type. |
432 |
| -This example adds an integer subscript to Swift's built-in `Int` type. |
433 |
| -This subscript `[n]` returns the decimal digit `n` places in |
434 |
| -from the right of the number: |
435 |
| - |
436 | 432 | 扩展可以为现有类型添加新的下标。
|
437 | 433 | 这个示例为 Swift 内置的 `Int` 类型添加了一个整数下标。
|
438 | 434 | 下标 `[n]` 返回数字从右边数第 `n` 位的十进制数字:
|
@@ -582,12 +578,12 @@ extension Int {
|
582 | 578 |
|
583 | 579 | 这个例子给 `Int` 添加了一个新的嵌套枚举。
|
584 | 580 | 这个枚举叫做 `Kind`,表示特定整数所代表的数字类型。
|
585 |
| -具体来说,它表示数字是负的、零的还是正的。 |
| 581 | +具体来说,它表示数字是负数、零还是正数。 |
586 | 582 |
|
587 | 583 | 这个例子也给 `Int` 添加了一个新的计算实例属性,叫做 `kind`,
|
588 | 584 | 它返回被操作整数所对应的 `Kind` 枚举值。
|
589 | 585 |
|
590 |
| -现在,任意 `Int` 的值都可以使用这个嵌套枚举: |
| 586 | +现在,这个嵌套枚举可以用于任何 `Int` 值: |
591 | 587 |
|
592 | 588 | ```swift
|
593 | 589 | func printIntegerKinds(_ numbers: [Int]) {
|
@@ -639,4 +635,18 @@ printIntegerKinds([3, 19, -27, 0, -6, 0, 7])
|
639 | 635 |
|
640 | 636 | > 注意: `number.kind` 已经被认为是 `Int.Kind` 类型。
|
641 | 637 | > 所以,在 `switch` 语句中所有的 `Int.Kind` 枚举值可以被缩写,
|
642 |
| -> 例如使用 `.negative` 替代 `Int.Kind.negative`。 |
| 638 | +> 例如使用 `.negative` 替代 `Int.Kind.negative`。 |
| 639 | +
|
| 640 | +> 测试版软件: |
| 641 | +> |
| 642 | +> 本文档包含有关正在开发的 API 或技术的初步信息。此信息可能会发生变化,根据本文档实施的软件应使用最终操作系统软件进行测试。 |
| 643 | +> |
| 644 | +> 了解有关使用 [Apple 测试版软件](https://developer.apple.com/support/beta-software/) 的更多信息. |
| 645 | +
|
| 646 | +<!-- |
| 647 | +This source file is part of the Swift.org open source project |
| 648 | +Copyright (c) 2014 - 2022 Apple Inc. and the Swift project authors |
| 649 | +Licensed under Apache License v2.0 with Runtime Library Exception |
| 650 | +See https://swift.org/LICENSE.txt for license information |
| 651 | +See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors |
| 652 | +--> |
0 commit comments