ÓA

Hola comunidad, tengo una duda. Por que imprime ambas opciones??? Your car has turned on Your car keys are missing

Debería imprimir solo la primera opción no?

Saludos y gracias por su tiempo.

Avatar

Buenos días, Oscar Armenta:

Siguiendo solo la lógica de programación (desconozco de Swift) y por lo que puedo entender en tu código, dentro de la función turnOn tienes una estructura if seguida de otra if - else, por lo que ambas condiciones van a evaluarse durante la ejecución de tu programa y te mostrarán los resultados que nos comentas.

Siendo específico, al llamar primero a la función turnOn al final de tu código (imagen 3) ocurre lo siguiente:

  • Cuando se evalúa if (key) && (speedStatus != 5) esto devuelve un valor true ya que pasaste como parámetro un valor true en la función turnOn y además la variable speedStatus = 0 declarada al inicio de tu clase tiene un valor distinto de 5 (es cero). El resultado entonces será "Your car has turned on".
  • Luego de lo anterior, se evalúa también la segunda condición if self.speedStatus == 5 y como la variable speedStatus sigue con valor de cero, se imprime entonces lo que está en el bloque else: "Your car keys are missing".

Espero haberme explicado, saludos ✌ .

Avatar

Cuando usamos el elemento Switch después de declarar cada Case debemos cerrarlo con Break; Ejemplo switch (condition) case 1: document.write ("hola") break; case 2: document.write ("hola mundo") break; Si no lo haces Así el programa ejecutara todas las sentencias y se detendrá cuando ya no haya ninguna para evaluar como te lo está haciendo.

ÓA

Lo arregle asi haha, ya funciona. Por cierto alguien sabe respecto a los computed properties e inicializadores? es lo mismo no? Que opinan? Saludos y gracias por sus respuestas.

lenguaje

//My first class.

//stored properties.

class myCar { var color = "red" var passengersNo = 5 var brand = "Ford" var gasolineCapacity:Double = 45

//computed properties

var gasolineCapacityGallons:Double {
    get {
        return gasolineCapacity / 3.78541
    }
    set {
        self.gasolineCapacity = newValue * 3.78541
    }
}

//Local properties due to a better writing of the code.

var onStatus = "turnedOff"
var speedStatus = 0
var carStatus = "car"

//methods.

func turnOn(key:Bool) {
    if (key) && (self.carStatus == "car") {
        print("Your car has turned on")
        self.onStatus = "turnedOn"
    }; if (key) && (self.carStatus == "no car") {
        print("Yes you have your keys but not your car. Time to buy a new one. May I recommend a Beautiful Jeep?")
    }; if(key == false){
        print("Your car keys must be missing")
    }
    
}

func move() {
    if (self.onStatus == "turnedOn") && (self.speedStatus != 5){
        self.gasolineCapacity = self.gasolineCapacity - 1
        self.speedStatus = self.speedStatus + 1
        print(self.gasolineCapacity, self.gasolineCapacityGallons)
        
        switch self.speedStatus {
        case 1:
            print("I want to go faster")
        case 2:
            print("I am going even faster")
        case 3:
            print("I am the fastest car in the whole world!")
        case 4:
            print("Wait no! We gotta slow down!")
        case 5:
            print("You have a car no more... Genius")
            self.carStatus = "no car"
        default:
            print("Time to buy a new car")
            self.carStatus = "no car"
        }
    } else if (self.onStatus == "turnedOff") && (self.carStatus == "car"){
        print("Room room! You're moving with a turned off car. You must be a magician")
    }

} }

var myCarResume = myCar() myCarResume.turnOn(key: true) myCarResume.move() myCarResume.move() myCarResume.move() myCarResume.move() myCarResume.move() myCarResume.turnOn(key: true) myCarResume.move() myCarResume.gasolineCapacity = 60 print("Your new number of gallons is : (myCarResume.gasolineCapacityGallons)")

Avatar

Un consejo: ayuda por favor puede significar que te estás ahogando, tu casa se está incendiando, te están asataltando o tu vida corre peligro. Por favor escribe títulos que describan el tema de tu publicación. Es muy dificil ayudar con este tipo de títulos.

Recuerdainiciar sesiónpara participar en la comunidad.