@@ -22,19 +22,27 @@ let numberSum = numbers.reduce(0, { x, y in
22
22
x + y
23
23
} )
24
24
// CHECK-NEXT: 10
25
- print ( numberSum)
25
+ print ( " \( numberSum) " )
26
26
27
27
let letters = " abracadabra "
28
28
let letterCount = letters. reduce ( into: [ : ] ) { counts, letter in
29
29
counts [ letter, default: 0 ] += 1
30
30
}
31
31
// CHECK-NEXT: ["a", "b", "c", "d", "r"]
32
- print ( letterCount. keys. sorted ( ) )
33
- print ( letterCount [ " a " ] !) // CHECK: 5
34
- print ( letterCount [ " b " ] !) // CHECK: 2
35
- print ( letterCount [ " c " ] !) // CHECK: 1
36
- print ( letterCount [ " d " ] !) // CHECK: 1
37
- print ( letterCount [ " r " ] !) // CHECK: 2
32
+ do {
33
+ var output = " "
34
+ var prefix = " "
35
+ for x in letterCount. keys. sorted ( ) {
36
+ output += " \( prefix) \" \( x) \" "
37
+ prefix = " , "
38
+ }
39
+ print ( " [ \( output) ] " )
40
+ }
41
+ print ( " \( letterCount [ " a " ] !) " ) // CHECK: 5
42
+ print ( " \( letterCount [ " b " ] !) " ) // CHECK: 2
43
+ print ( " \( letterCount [ " c " ] !) " ) // CHECK: 1
44
+ print ( " \( letterCount [ " d " ] !) " ) // CHECK: 1
45
+ print ( " \( letterCount [ " r " ] !) " ) // CHECK: 2
38
46
39
47
40
48
// Test the two reduce methods with different levels of inference
@@ -43,36 +51,36 @@ let numbers2 = Array(2..<7)
43
51
// Test reduce(_:_:)
44
52
// CHECK-NEXT: 20
45
53
let sum1 = numbers2. reduce ( 0 ) { ( x: Int , y: Int ) -> Int in x + y }
46
- print ( sum1)
54
+ print ( " \( sum1) " )
47
55
48
56
// CHECK-NEXT: 20
49
57
let sum2 = numbers2. reduce ( 0 ) { ( x, y) in x + y }
50
- print ( sum2)
58
+ print ( " \( sum2) " )
51
59
52
60
// CHECK-NEXT: 20
53
61
let sum3 = numbers2. reduce ( 0 ) { $0 + $1 }
54
- print ( sum3)
62
+ print ( " \( sum3) " )
55
63
56
64
// CHECK-NEXT: 20
57
65
let sum4 = numbers2. reduce ( 0 , + )
58
- print ( sum4)
66
+ print ( " \( sum4) " )
59
67
60
68
// Test reduce(into:_:)
61
69
// CHECK-NEXT: 20
62
70
let sum5 = numbers2. reduce ( into: 0 ) { ( x: inout Int , y: Int ) in x += y }
63
- print ( sum5)
71
+ print ( " \( sum5) " )
64
72
65
73
// CHECK-NEXT: 20
66
74
let sum6 = numbers2. reduce ( into: 0 ) { x, y in x += y }
67
- print ( sum6)
75
+ print ( " \( sum6) " )
68
76
69
77
// CHECK-NEXT: 20
70
78
let sum7 = numbers2. reduce ( into: 0 ) { $0 += $1 }
71
- print ( sum7)
79
+ print ( " \( sum7) " )
72
80
73
81
// CHECK-NEXT: 20
74
82
let sum8 = numbers2. reduce ( into: 0 , += )
75
- print ( sum8)
83
+ print ( " \( sum8) " )
76
84
77
85
78
86
// Test that the initial value remains unmodified
@@ -81,9 +89,25 @@ let result = numbers2.reduce(into: original) { acc, x in
81
89
acc. append ( x)
82
90
}
83
91
// CHECK-NEXT: [0, 1]
84
- print ( original)
92
+ do {
93
+ var output = " "
94
+ var prefix = " "
95
+ for x in original {
96
+ output += " \( prefix) \( x) "
97
+ prefix = " , "
98
+ }
99
+ print ( " [ \( output) ] " )
100
+ }
85
101
// CHECK-NEXT: [0, 1, 2, 3, 4, 5, 6]
86
- print ( result)
102
+ do {
103
+ var output = " "
104
+ var prefix = " "
105
+ for x in result {
106
+ output += " \( prefix) \( x) "
107
+ prefix = " , "
108
+ }
109
+ print ( " [ \( output) ] " )
110
+ }
87
111
88
112
89
113
// CHECK: all done.
0 commit comments