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 (verdadero) |
!= |
Distinto de |
1 != 2 (verdadero) |
< |
Menor que |
4 < 5 (verdadero) |
<= |
Menor o igual que |
4 <= 4 (verdadero) |
> |
Mayor que |
3 > 1 (verdadero) |
>= |
Mayor o igual que |
2 >= 2 (verdadero) |
if y else
Una sentencia condicional ejecuta código según si una condición se evalúa como true o false.
El condicional más común es la sentencia if, que solo ejecuta un bloque de código cuando su condición es true.
Escribe una sentencia if con la palabra clave if, seguida de la condición y del bloque de código encerrado 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 probar varias condiciones en secuencia, encadena sentencias con else if.
Una sentencia if no requiere una rama else, pero puedes incluirla para cubrir los casos en los que ninguna de las condiciones coincida:
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"
if
En el Swift moderno, las sentencias if también pueden usarse 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 usa tres partes: condition ? trueExpression : falseExpression.
Si condition se evalúa como true, se evalúa trueExpression y se devuelve ese valor; de lo contrario, se evalúa falseExpression y se devuelve ese valor.
El operador ternario es ideal para elecciones simples 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 puedes pagar las cuotas mensuales, otra para determinar qué tipo de licencia de conducir necesitarás y una para estimar el precio aceptable de un vehículo usado.
Los concesionarios de autos de tu ciudad están ofreciendo una promoción de cinco años con 0% de interés que te gustaría aprovechar. Pero no sabes si podrás pagar las cuotas mensuales del auto que quieres.
La cuota mensual es el precio total del auto dividido entre el número de meses del periodo de cinco años.
Implementa la función canIBuy(vehicle:price:monthlyBudget:) que recibe 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 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 licencia de conducir necesitarás para manejarlo.
Implementa la función licenseType(numberOfWheels:) que recibe 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 tomaste tu decisión, quieres asegurarte de que obtienes un precio justo en el concesionario. Como te interesa 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 recibe 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.