|
17 | 17 | //===----------------------------------------------------------------------===//
|
18 | 18 | /// A type that has no values and can't be constructed.
|
19 | 19 | ///
|
20 |
| -/// Use `Never` as the return type of a function |
21 |
| -/// that doesn't return normally --- for example, |
22 |
| -/// because it runs forever or terminates the program. |
| 20 | +/// Use `Never` as the return type of a function that doesn't return normally |
| 21 | +/// --- for example, because it runs forever or terminates the program. |
23 | 22 | ///
|
24 | 23 | /// // An infinite loop never returns.
|
25 | 24 | /// func forever() -> Never {
|
|
34 | 33 | /// }
|
35 | 34 | ///
|
36 | 35 | /// A function that returns `Never` is called a _nonreturning_ function.
|
37 |
| -/// Closures, methods, computed properties, and subscripts |
38 |
| -/// can also be nonreturning. |
39 |
| -/// |
40 |
| -/// There's no way to create an instance of `Never`; |
41 |
| -/// this characteristic makes it an _uninhabited_ type. |
42 |
| -/// You can use an uninhabited type like `Never` |
43 |
| -/// to represent states in your program |
44 |
| -/// that are impossible to reach during execution. |
45 |
| -/// Swift's type system uses this information --- |
46 |
| -/// for example, to reason about control statements |
47 |
| -/// in cases that are known to be unreachable. |
| 36 | +/// Closures, methods, computed properties, and subscripts can also be |
| 37 | +/// nonreturning. |
| 38 | +/// |
| 39 | +/// There's no way to create an instance of `Never`; this characteristic makes |
| 40 | +/// it an _uninhabited_ type. You can use an uninhabited type like `Never` to |
| 41 | +/// represent states in your program that are impossible to reach during |
| 42 | +/// execution. Swift's type system uses this information --- for example, to |
| 43 | +/// reason about control statements in cases that are known to be unreachable. |
48 | 44 | ///
|
49 | 45 | /// let favoriteNumber: Result<Int, Never> = .success(42)
|
50 | 46 | /// switch favoriteNumber {
|
51 | 47 | /// case .success(let value):
|
52 | 48 | /// print("My favorite number is", value)
|
53 | 49 | /// }
|
54 | 50 | ///
|
55 |
| -/// In the code above, |
56 |
| -/// `favoriteNumber` has a failure type of `Never`, |
57 |
| -/// indicating that it always succeeds. |
58 |
| -/// The switch statement is therefore exhaustive, |
59 |
| -/// even though it doesn't contain a `.failure` case, |
60 |
| -/// because that case could never be reached. |
| 51 | +/// In the code above, `favoriteNumber` has a failure type of `Never`, |
| 52 | +/// indicating that it always succeeds. The switch statement is therefore |
| 53 | +/// exhaustive, even though it doesn't contain a `.failure` case, because that |
| 54 | +/// case could never be reached. |
61 | 55 | @frozen
|
62 | 56 | public enum Never {}
|
63 | 57 |
|
|
0 commit comments