Skip to content

Commit b592b6f

Browse files
committed
#19-Swift
1 parent 02e0cfe commit b592b6f

File tree

1 file changed

+164
-0
lines changed

1 file changed

+164
-0
lines changed
Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
import Foundation
2+
3+
4+
5+
// Definición del enum de los dias de la semana.
6+
enum WeekDays: Int {
7+
case monday = 1
8+
case tuesday = 2
9+
case wednesday = 3
10+
case thursday = 4
11+
case friday = 5
12+
case saturday = 6
13+
case sunday = 7
14+
}
15+
16+
// Pide por consola el número del dia de la semana que quieres comprobar.
17+
print("\n[+] - Introduce el número del dia de la semana:")
18+
guard let input = readLine(), let numberOfTheDay = Int(input) else {
19+
fatalError()
20+
}
21+
22+
// Inserta el número añadido al valor del enum.
23+
if let weekDays = WeekDays(rawValue: numberOfTheDay) {
24+
// Comprueva que dia de la semana corresponde al número introducido.
25+
switch weekDays {
26+
27+
case .monday:
28+
print("Es lunes.")
29+
30+
case .tuesday:
31+
print("Es martes.")
32+
33+
case .wednesday:
34+
print("Es miercoles.")
35+
36+
case .thursday:
37+
print("Es jueves.")
38+
39+
case .friday:
40+
print("Es viernes.")
41+
42+
case .saturday:
43+
print("Es sabado.")
44+
45+
case .sunday:
46+
print("Es domingo.")
47+
}
48+
} else {
49+
print("[!] - Numero no valido.")
50+
}
51+
52+
53+
54+
55+
// DIFICULTAD EXTRA
56+
print("\nDIFICULTAD EXTRA.")
57+
// Espera 4 segundos antes de ejecutar la dificultad extra.
58+
sleep(4)
59+
60+
61+
62+
// Definición de la clase para manejar el estatus de un pedido.
63+
class Order {
64+
let id: String // Declara la propiedad id.
65+
var orderStatus: Status // Declara la propiedad orderStatus
66+
67+
// Define el inicializador para las dos propiedades, el parametro id tiene valor por defecto.
68+
init(id: String = UUID().uuidString, orderStatus: Status) {
69+
self.id = id
70+
self.orderStatus = orderStatus
71+
}
72+
73+
// Definición del enum con los estados del producto.
74+
enum Status {
75+
case pending
76+
case shipped
77+
case delivered
78+
case cancelated
79+
}
80+
81+
// Definición de la función para enviar el pedido, el parametro shippedStatus con valor por defecto.
82+
func shippedOrder(forOrder order: Order, shippedStatus: Status = .shipped) {
83+
if orderStatus == .shipped {
84+
print("\nEl pedido \(order.id) esta enviado.")
85+
86+
} else if orderStatus == .pending {
87+
print("\nEl pedido \(order.id) esta aun pendiente.")
88+
89+
} else if orderStatus == .delivered {
90+
print("\nEl pedido \(order.id) aun no se ha entregado.")
91+
92+
} else if orderStatus == .cancelated {
93+
print("\nEl pedido \(order.id) se ha cancelado.")
94+
}
95+
}
96+
97+
// Definición de la función para entregra el pedido, el parametro deliveredStatus con valor por defecto.
98+
func deliveredOrder(forOrder order: Order, deliveredStatus: Status = .delivered) {
99+
if orderStatus == .delivered {
100+
print("El pedido \(order.id) fue entregado.")
101+
102+
} else if orderStatus == .pending {
103+
print("\nEl pedido \(order.id) aun esta pendiente.")
104+
105+
} else if orderStatus == .shipped {
106+
print("\nEl pedido \(order.id) este de camino.")
107+
108+
} else if orderStatus == .cancelated {
109+
print("\nEl pedido \(order.id) fue cancelado.")
110+
}
111+
}
112+
113+
// Definición de la función para cancelar el pedido, el parametro cancelatedStatus con valor por defecto.
114+
func cancelatedOrder(forOrder order: Order, cancelatedStatus: Status = .cancelated) {
115+
if orderStatus == .cancelated {
116+
print("\nPedido \(order.id) cancelado.")
117+
118+
} else if orderStatus == .pending {
119+
print("\nPedido \(order.id) cancelado.")
120+
121+
} else if orderStatus == .shipped {
122+
print("\nEl pedido \(order.id) esta de camino, no se puede cancelar")
123+
124+
} else if orderStatus == .delivered {
125+
print("\nEl pedido \(order.id) fue entregado, no se puede cancelar.")
126+
}
127+
}
128+
129+
// Definición de la función para imprimir el estado del producto.
130+
func printOrderInfo(forOrder order: Order) {
131+
switch order.orderStatus {
132+
133+
case .pending:
134+
print("El pedido \(order.id) esta pendiente.")
135+
136+
case .shipped:
137+
print("El pedido \(order.id) esta de camino.")
138+
139+
case .delivered:
140+
print("El pedido \(order.id) fue entregado.")
141+
142+
case .cancelated:
143+
print("El pedido \(order.id) fue cancelado.")
144+
}
145+
}
146+
}
147+
148+
// Ejemplos con la clase.
149+
let order1 = Order(orderStatus: .pending)
150+
order1.shippedOrder(forOrder: order1)
151+
order1.printOrderInfo(forOrder: order1)
152+
153+
let order2 = Order(orderStatus: .shipped)
154+
order2.deliveredOrder(forOrder: order2)
155+
order2.printOrderInfo(forOrder: order2)
156+
157+
let order3 = Order(orderStatus: .delivered)
158+
order3.cancelatedOrder(forOrder: order3)
159+
order3.printOrderInfo(forOrder: order3)
160+
161+
let order4 = Order(orderStatus: .cancelated)
162+
order4.deliveredOrder(forOrder: order4)
163+
order4.printOrderInfo(forOrder: order4)
164+

0 commit comments

Comments
 (0)