
Ejercicios Resueltos Capítulo 18
Tabla de contenido
Aquí encontrarás todas las respuestas del capítulo 18
/*
EJERCICIO 1, usamos el operador is para comprobar el tipo de una instancia
*/
let myNumber = 5000
if myNumber is Int {
print("myNumber is a number")
}
/*
EJERCICIO 2, usamos el operador as para convertir una instancia de un tipo a otro
*/
let someString: Any = "Hello, world!"
let castedString = someString as! String
print(castedString)
let maybeInteger: Any = "123"
let castedInteger = maybeInteger as? Int
print(castedInteger)
let definitelyInteger: Any = 123
let forcefullyCastedInteger = definitelyInteger as! Int
print(forcefullyCastedInteger)
/*
EJERCICIO 3
as?: Este es un tipo de casting condicional que intenta convertir un tipo en otro y devuelve un valor opcional. Si el casting no tiene éxito, devuelve nil.
as!: Este es un tipo de casting forzado que intenta convertir un tipo en otro y fallará con un error de tiempo de ejecución si el casting no tiene éxito.
*/
/*
EJERCICIO 4, usamos el operador as para convertir una instancia de un tipo a otro
*/
protocol Animal {
func makeSound()
}
class Dog: Animal {
func makeSound() {
print("Woof!")
}
}
class Cat: Animal {
func makeSound() {
print("Meow!")
}
}
let animals: [Animal] = [Dog(), Cat()]
for animal in animals {
animal.makeSound()
// Type Casting
if let dog = animal as? Dog {
print("This is a dog.")
} else if let cat = animal as? Cat {
print("This is a cat.")
}
}