Los operadores de comparación comparan dos valores del mismo tipo y devuelven un valor Bool (true o false).
Si intentas comparar valores de tipos distintos, el compilador produce un error.
Los operadores de comparación estándar en Swift son:
| Operador | Descripción | Ejemplo |
|---|---|---|
== |
Igual a |
1 == 1 (true) |
!= |
Distinto de |
1 != 2 (true) |
< |
Menor que |
4 < 5 (true) |
<= |
Menor o igual que |
4 <= 4 (true) |
> |
Mayor que |
3 > 1 (true) |
>= |
Mayor o igual que |
2 >= 2 (true) |
Una instrucción condicional ejecuta código según si una condición se evalúa como true o false.
El condicional más común es una instrucción if, que ejecuta un bloque de código solo cuando su condición es true.
Escribe una instrucción if con la palabra clave if, seguida de la condición y el bloque de código entre llaves:
let wheelCount = 4
if wheelCount == 4 {
print("Your vehicle is a car")
}
// Prints "Your vehicle is a car"
Puedes combinar if con una cláusula else para ejecutar código alternativo cuando la condición es false:
let precipitationInMM = 0.5
if precipitationInMM > 0.5 {
print("You will need an umbrella")
} else {
print("You will not need an umbrella")
}
// Prints "You will not need an umbrella"
Para comprobar varias condiciones en secuencia, encadena instrucciones con else if.
Una instrucción if no requiere una rama else, pero puedes incluir una para gestionar los casos en los que no coincide ninguna de las condiciones:
let favoriteFruit = "Apple"
if favoriteFruit == "Banana" {
print("Your favorite fruit is a banana")
} else if favoriteFruit == "Orange" {
print("Your favorite fruit is an orange")
} else if favoriteFruit == "Apple" {
print("Your favorite fruit is an apple")
} else {
print("Your favorite fruit is not a banana, orange, or apple")
}
// Prints "Your favorite fruit is an apple"
En Swift moderno, las instrucciones if también se pueden usar como expresiones que producen un valor.
Cada rama se evalúa como un valor, lo que facilita asignar resultados de forma condicional:
let cpuBits = 32
let architecture = if cpuBits == 64 {
"x86_64"
} else {
"x86_32"
}
print(architecture)
// Prints "x86_32"
El operador condicional ternario es una forma abreviada y concisa de una expresión if-else.
Evalúa una condición y devuelve uno de dos valores según si esa condición es true o false.
El operador consta de tres partes: condition ? trueExpression : falseExpression.
Si condition se evalúa como true, se evalúa y se devuelve trueExpression; en caso contrario, se evalúa y se devuelve falseExpression.
El operador ternario es ideal para elecciones sencillas de una sola línea:
let showFahrenheit = true
let temperatureInCelsius = 30
let temperature = showFahrenheit ? temperatureInCelsius * 9 / 5 + 32 : temperatureInCelsius
print(temperature)
// Prints 86
El ejemplo anterior es un equivalente compacto de:
let showFahrenheit = true
let temperatureInCelsius = 30
let temperature = if showFahrenheit {
temperatureInCelsius * 9 / 5 + 32
} else {
temperatureInCelsius
}
En este ejercicio, escribirás algo de código para ayudarte a prepararte para comprar un vehículo.
Tienes tres tareas: una para determinar si podrás permitirte uno, otra para ayudarte a elegir entre dos vehículos y determinar qué licencia necesitarás, y otra para estimar el precio aceptable de un vehículo usado.
Los concesionarios de tu ciudad están ofreciendo una promoción de cinco años con un 0% de interés de la que te gustaría aprovecharte. Pero no estás seguro de si puedes permitirte los pagos mensuales del coche que quieres.
El pago mensual es el precio total del coche dividido entre el número de meses del periodo de cinco años.
Implementa la función canIBuy(vehicle:price:monthlyBudget:) que toma los siguientes argumentos:
vehicle - El nombre del vehículo que quieres comprar.price - El precio del vehículo que quieres comprar.monthlyBudget - La cantidad de dinero que puedes permitirte pagar cada mes.La función debe devolver el siguiente mensaje según las siguientes condiciones:
"Yes! I'm getting a <vehicle>"."I'll have to be frugal if I want a <vehicle>"."Darn! No <vehicle> for me".canIBuy(vehicle: "1974 Ford Pinto", price: 516.32, monthlyBudget: 100.00)
// returns "Yes! I'm getting a 1974 Ford Pinto"
canIBuy(vehicle: "2011 Bugatti Veyron", price: 2_250_880.00, monthlyBudget: 10000.00)
// returns "Darn! No 2011 Bugatti Veyron for me"
canIBuy(vehicle: "2020 Indian FTR 1200", price: 12_500, monthlyBudget: 200)
// returns "I'll have to be frugal if I want a 2020 Indian FTR 1200"
Has decidido comprar un vehículo usado y necesitas determinar qué tipo de carné de conducir necesitarás para conducirlo.
Implementa la función licenseType(numberOfWheels:) que toma el argumento numberOfWheels, que es el número de ruedas del vehículo que quieres comprar.
La función debe devolver el siguiente mensaje según las siguientes condiciones:
"You will need a motorcycle license for your vehicle"."You will need an automobile license for your vehicle"."You will need a commercial trucking license for your vehicle"."We do not issue licenses for those types of vehicles".licenseType(numberOfWheels: 2)
// returns "You will need a motorcycle license for your vehicle"
licenseType(numberOfWheels: 6)
// returns "You will need an automobile license for your vehicle"
licenseType(numberOfWheels: 18)
// returns "You will need a commercial trucking license for your vehicle"
licenseType(numberOfWheels: 0)
// returns "We do not issue licenses for those types of vehicles"
Ahora que has tomado tu decisión, quieres asegurarte de obtener un precio justo en el concesionario. Como estás interesado en comprar un vehículo usado, el precio depende de la antigüedad del vehículo. Como estimación aproximada, supón que si el vehículo tiene menos de 3 años, cuesta el 80 % del precio original que tenía cuando era nuevo. Si tiene al menos 10 años, cuesta el 50 %. Si el vehículo tiene al menos 3 años pero no más de 10, cuesta el 70 % del precio original.
Implementa la función calculateResellPrice(originalPrice:yearsOld:) que toma los argumentos originalPrice, que contiene el precio original del vehículo, y yearsOld, que contiene la antigüedad del vehículo en años.
La función debe devolver el precio de reventa del vehículo.
calculateResellPrice(originalPrice: 1000, yearsOld: 1)
// returns 800
calculateResellPrice(originalPrice: 1000, yearsOld: 5)
// returns 700
calculateResellPrice(originalPrice: 1000, yearsOld: 15)
// returns 500
Regístrate en Exercism para aprender y dominar Swift con 35 conceptos116 ejercicios y mentoría humana real, todo gratis.