@@ -70,7 +70,8 @@ and a `continue` statement and is discussed in <doc:Statements#Break-Statement>
70
70
A ` for ` -` in ` statement allows a block of code to be executed
71
71
once for each item in a collection (or any type)
72
72
that conforms to the
73
- [ ` Sequence ` ] ( https://developer.apple.com/documentation/swift/sequence ) protocol, or in a value parameter pack.
73
+ [ ` Sequence ` ] ( https://developer.apple.com/documentation/swift/sequence ) protocol,
74
+ or in a value parameter pack.
74
75
75
76
A ` for ` -` in ` statement has the following form:
76
77
@@ -80,9 +81,10 @@ for <#item#> in <#expression#> {
80
81
}
81
82
```
82
83
83
- If the * expression* of a ` for ` -` in ` statement is a collection * expression* , the
84
- ` makeIterator() ` method is called on it to obtain a value of an iterator type
85
- --- that is, a type that conforms to the
84
+ If the * expression* of a ` for ` -` in ` statement is a collection * expression* ,
85
+ the ` makeIterator() ` method is called on it
86
+ to obtain a value of an iterator type --- that is,
87
+ a type that conforms to the
86
88
[ ` IteratorProtocol ` ] ( https://developer.apple.com/documentation/swift/iteratorprotocol ) protocol.
87
89
The program begins executing a loop
88
90
by calling the ` next() ` method on the iterator.
@@ -93,15 +95,20 @@ and then continues execution at the beginning of the loop.
93
95
Otherwise, the program doesn't perform assignment or execute the * statements* ,
94
96
and it's finished executing the ` for ` -` in ` statement.
95
97
96
- The * expression* of a ` for ` -` in ` statement may also be a pack expansion
97
- * expression* . In this case, on the * i* th iteration, the type of * item* is the
98
- * i* th type parameter in the type parameter pack being iterated over. The value
99
- of * item* is the pattern type of * expression* , with each captured type
100
- parameter pack replaced with an implicit scalar type parameter with matching
101
- requirements. The * expression* is evaluated once at each iteration, instead of
102
- ` n ` times eagerly, where ` n ` is the length of the packs captured by the
103
- pattern. The program will continue executing * statements* while the total
104
- length of the packs captured by the pattern isn't reached.
98
+ The * expression* of a ` for ` -` in ` statement
99
+ may also be a pack expansion * expression* .
100
+ In this case,
101
+ on the * i* th iteration,
102
+ the type of * item* is the * i* th type parameter
103
+ in the type parameter pack being iterated over.
104
+ The value of * item* is the pattern type of * expression* ,
105
+ with each captured type parameter pack replaced with
106
+ an implicit scalar type parameter with matching requirements.
107
+ The * expression* is evaluated once at each iteration,
108
+ instead of ` n ` times eagerly,
109
+ where ` n ` is the length of the packs captured by the pattern.
110
+ The program will continue executing * statements*
111
+ while the total length of the packs captured by the pattern isn't reached.
105
112
106
113
> Grammar of a for-in statement:
107
114
>
0 commit comments