protocol Avisable {
    var nombre : String {get}
    var bateria : Int{get set}
    func aviso()-> String
}
extension Avisable {
    func aviso() -> String {
        if bateria < 20{
            return "Aviso: batería baja en \(nombre)"
        }else{
            return "Batería suficiente en \(nombre)"
        }
    }
}
struct Sensor: Avisable {
    let nombre: String
    var bateria: Int
    let ubicacion: String
}

struct Robot: Avisable {
    let nombre: String
    var bateria: Int
    let modelo: String

    func aviso() -> String {
        if bateria < 20{
            return "Robot \(nombre) necesita recarga urgente"
        }else{
            return "Robot \(nombre) operativo"
        }
    }
}
let robot1 = Robot(nombre: "R2", bateria: 15, modelo: "explorador")
let robot2 = Robot(nombre: "T7", bateria: 80, modelo: "transporte")
let sensor1 = Sensor(nombre: "S1", bateria: 10, ubicacion: "laboratorio")
let sensor2 = Sensor(nombre: "S2", bateria: 60, ubicacion: "almacén")

// Hueco 6:
// Declara un array llamado elementos que pueda contener valores
// de cualquier tipo que adopte Avisable.
// El array debe contener robot1, robot2, sensor1 y sensor2.
var elementos: [Avisable] = [robot1, robot2, sensor1, sensor2]

// Hueco 7:
// Recorre el array elementos e imprime el resultado de llamar
// al método aviso() de cada elemento.
for elemento in elementos{
    print(elemento.aviso())
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: