Skip to content

Commit 0780b65

Browse files
author
Bob Lee
committed
Prepped Map
1 parent 0f82851 commit 0780b65

File tree

4 files changed

+38
-28
lines changed

4 files changed

+38
-28
lines changed
0 Bytes
Binary file not shown.
Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,51 @@
1-
/*:
2-
3-
## Learn Swift with Bob
4-
### Functional Programming
5-
### Map
6-
7-
**Problem:** A closure is too long to pass through a function
8-
9-
---
10-
*/
11-
12-
13-
14-
var values = [2.0,4.0,5.0,7.0]
15-
var squares: [Double] = []
16-
for value in values {
17-
squares.append(value*value)
18-
}
19-
20-
21-
values = [2.0,4.0,5.0,7.0]
22-
squares = values.map { $0 * $0 }
23-
// [4.0, 16.0, 25.0, 49.0]
24-
251

2+
//: Imperative/Non-functional
3+
var squaredNumbers: [Double] = []
264

5+
var numbers = [1.0, 2.0, 3.0, 4.0, 5.0]
6+
for number in numbers {
7+
squaredNumbers.append(number * number)
8+
}
279

10+
numbers.map { $0 * $0 } // [1, 4, 9, 16, 25]
11+
let cast = ["Vivien", "Marlon", "Kim", "Karl"]
12+
let lowercaseNames = cast.map { $0.lowercased() }
2813

14+
func myMap(numbers: [Double], logic: (Double) -> Double) -> [Double] {
15+
var result: [Double] = []
16+
for number in numbers {
17+
let transformedValue = logic(number)
18+
result.append(transformedValue)
19+
}
20+
return result
21+
}
2922

30-
func myMap<T, U>(_ items: [T], _ f: (T) -> U) -> [U] {
23+
myMap(numbers: [1, 2, 3, 4, 5]) { (number) -> Double in number * 10 }
24+
myMap(numbers: [1, 2, 3, 4, 5]) { $0 * 10 }
25+
//: Generics
26+
func myMap<T, U>(_ items: [T], _ operation: (T) -> U) -> [U] {
3127
var result = [U]()
3228
for item in items {
33-
result.append(f(item))
29+
result.append(operation(item))
3430
}
3531
return result
3632
}
3733

34+
myMap([1, 2, 3, 4 , 5, 6]) { String($0 * $0) }
35+
//: The Purest Form
36+
extension Array {
37+
func myMap<U>(_ operation: (Element) -> U) -> [U] {
38+
var result = [U]()
39+
for item in self {
40+
result.append(operation(item))
41+
}
42+
return result
43+
}
44+
}
45+
46+
47+
let result = Array(1...10).myMap { $0 * 10 }
48+
print(result)
3849

39-
print(myMap([1, 2, 3, 4 , 5, 6]) { $0 * $0 })
4050

4151

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2-
<playground version='5.0' target-platform='ios' display-mode='raw'>
2+
<playground version='5.0' target-platform='ios' display-mode='rendered'>
33
<timeline fileName='timeline.xctimeline'/>
44
</playground>
316 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)