Skip to content

Commit 8835dfc

Browse files
authored
Merge pull request mouredev#4597 from allbertoMD/Reto-#24
#24-Swift
2 parents 3ffddfc + a181d58 commit 8835dfc

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import Foundation
2+
3+
4+
func greet() {
5+
print("Hola, Mundo!")
6+
}
7+
8+
// Decorador
9+
func decorateGreet(originalFunction: @escaping () -> Void) -> () -> Void {
10+
return {
11+
print("Iniciando Saludo")
12+
originalFunction()
13+
print("Saludo Finalizado\n")
14+
}
15+
}
16+
17+
// Usando el decorador
18+
let decoratedGreet = decorateGreet(originalFunction: greet)
19+
decoratedGreet()
20+
21+
22+
func add(a: Int, b: Int) -> Int {
23+
return a + b
24+
}
25+
26+
// Decorador
27+
func decorateAdd(originalFunction: @escaping (Int, Int) -> Int) -> (Int, Int) -> Int {
28+
return { a, b in
29+
print("Sumando \(a) and \(b)")
30+
let result = originalFunction(a, b)
31+
print("El Resultado Es: \(result)")
32+
return result
33+
}
34+
}
35+
36+
// Usando el decorador
37+
let decoratedAdd = decorateAdd(originalFunction: add)
38+
let result = decoratedAdd(3, 4)
39+
print("Resultado Final: \(result)\n")
40+
41+
42+
43+
44+
// DIFICULTAD EXTRA
45+
print("\nDificultad Extra\n")
46+
47+
48+
func sayHi(to personName: String) {
49+
print("Hola, \(personName)")
50+
}
51+
52+
53+
func decorateSayHi(originFunction: @escaping (String) -> Void) -> (String) -> Void {
54+
var callCount = 0
55+
56+
return { personName in
57+
originFunction(personName)
58+
callCount += 1
59+
60+
if callCount < 2 {
61+
print("Función ejecutada \(callCount) vez.\n")
62+
} else {
63+
print("Función ejecutada \(callCount) veces.\n")
64+
}
65+
66+
}
67+
}
68+
69+
let decoratedSayHi = decorateSayHi(originFunction: sayHi)
70+
decoratedSayHi("Sergio")
71+
decoratedSayHi("Alberto")
72+
decoratedSayHi("Arturo")
73+
decoratedSayHi("Angeles")
74+
decoratedSayHi("Yaiza")
75+
decoratedSayHi("Carmen")
76+
77+
78+

0 commit comments

Comments
 (0)