Gli operatori di confronto confrontano due valori dello stesso tipo e restituiscono un valore Bool (true o false).
Se provi a confrontare valori di tipi diversi, il compilatore genera un errore.
Gli operatori di confronto standard in Swift sono:
| Operatore | Descrizione | Esempio |
|---|---|---|
== |
Uguale a |
1 == 1 (vero) |
!= |
Diverso da |
1 != 2 (vero) |
< |
Minore di |
4 < 5 (vero) |
<= |
Minore o uguale a |
4 <= 4 (vero) |
> |
Maggiore di |
3 > 1 (vero) |
>= |
Maggiore o uguale a |
2 >= 2 (vero) |
Una istruzione condizionale esegue codice a seconda che una condizione sia true o false.
L'istruzione condizionale più comune è l'istruzione if, che esegue un blocco di codice solo quando la sua condizione è true.
Per scrivere un'istruzione if, usa la parola chiave if, seguita dalla condizione e dal blocco di codice racchiuso tra parentesi graffe:
let wheelCount = 4
if wheelCount == 4 {
print("Your vehicle is a car")
}
// Prints "Your vehicle is a car"
Puoi abbinare if a una clausola else per eseguire codice alternativo quando la condizione è 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"
Per verificare più condizioni in sequenza, concatena le istruzioni usando else if.
Un'istruzione if non richiede un ramo else, ma puoi includerne uno per gestire i casi in cui nessuna delle condizioni corrisponde:
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"
Nel Swift moderno, le istruzioni if possono essere usate anche come espressioni che producono un valore.
Ogni ramo restituisce un valore, il che rende semplice assegnare i risultati in modo condizionale:
let cpuBits = 32
let architecture = if cpuBits == 64 {
"x86_64"
} else {
"x86_32"
}
print(architecture)
// Prints "x86_32"
L'operatore condizionale ternario è una scorciatoia concisa per un'espressione if-else.
Valuta una condizione e restituisce uno di due valori a seconda che quella condizione sia true o false.
L'operatore usa tre parti: condition ? trueExpression : falseExpression.
Se condition è true, viene valutata e restituita trueExpression; altrimenti, viene valutata e restituita falseExpression.
L'operatore ternario è ideale per scelte semplici, su una sola riga:
let showFahrenheit = true
let temperatureInCelsius = 30
let temperature = showFahrenheit ? temperatureInCelsius * 9 / 5 + 32 : temperatureInCelsius
print(temperature)
// Prints 86
L'esempio qui sopra è un equivalente compatto di:
let showFahrenheit = true
let temperatureInCelsius = 30
let temperature = if showFahrenheit {
temperatureInCelsius * 9 / 5 + 32
} else {
temperatureInCelsius
}
In questo esercizio scriverai del codice che ti aiuterà a prepararti all'acquisto di un veicolo.
Hai tre attività: una per determinare se ti servirà qualcosa che ti aiuti a scegliere tra due veicoli, una per determinare quale patente ti servirà e una per stimare il prezzo accettabile di un veicolo usato.
I concessionari della tua città stanno tutti proponendo una promozione di cinque anni a interesse 0% di cui vorresti approfittare. Ma non sei sicuro di poterti permettere le rate mensili dell'auto che vuoi.
La rata mensile è il prezzo totale dell'auto diviso per il numero di mesi del periodo di cinque anni.
Implementa la funzione canIBuy(vehicle:price:monthlyBudget:) che accetta i seguenti argomenti:
vehicle: il nome del veicolo che vuoi acquistare.price: il prezzo del veicolo che vuoi acquistare.monthlyBudget: la somma di denaro che puoi permetterti di pagare ogni mese.La funzione deve restituire il seguente messaggio in base alle seguenti condizioni:
"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"
Hai deciso di acquistare un veicolo usato e devi determinare quale tipo di patente ti servirà per guidarlo.
Implementa la funzione licenseType(numberOfWheels:) che accetta l'argomento numberOfWheels, cioè il numero di ruote del veicolo che vuoi acquistare.
La funzione deve restituire il seguente messaggio in base alle seguenti condizioni:
"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"
Ora che hai preso la tua decisione, vuoi assicurarti di ottenere un prezzo equo dal concessionario. Dato che vuoi acquistare un veicolo usato, il prezzo dipende da quanto è vecchio il veicolo. Per una stima approssimativa, supponi che se il veicolo ha meno di 3 anni costi l'80% del prezzo originale che aveva quando era nuovo di zecca. Se ha almeno 10 anni, costa il 50%. Se il veicolo ha almeno 3 anni ma non più di 10, costa il 70% del prezzo originale.
Implementa la funzione calculateResellPrice(originalPrice:yearsOld:) che accetta gli argomenti originalPrice, che contiene il prezzo originale del veicolo, e yearsOld, che contiene l'età del veicolo in anni.
La funzione deve restituire il prezzo di rivendita del veicolo.
calculateResellPrice(originalPrice: 1000, yearsOld: 1)
// returns 800
calculateResellPrice(originalPrice: 1000, yearsOld: 5)
// returns 700
calculateResellPrice(originalPrice: 1000, yearsOld: 15)
// returns 500
Iscriviti a Exercism per imparare e padroneggiare Swift con 35 concetti116 esercizi e il mentoring di persone reali, tutto gratis.