Οι τελεστές σύγκρισης συγκρίνουν δύο τιμές του ίδιου τύπου και επιστρέφουν μια τιμή Bool (true ή false).
Αν προσπαθήσεις να συγκρίνεις τιμές διαφορετικών τύπων, ο μεταγλωττιστής παράγει ένα σφάλμα.
Οι βασικοί τελεστές σύγκρισης στη Swift είναι:
| Τελεστής | Περιγραφή | Παράδειγμα |
|---|---|---|
== |
ίσο με |
1 == 1 (true) |
!= |
όχι ίσο με |
1 != 2 (true) |
< |
μικρότερο από |
4 < 5 (true) |
<= |
μικρότερο ή ίσο με |
4 <= 4 (true) |
> |
μεγαλύτερο από |
3 > 1 (true) |
>= |
μεγαλύτερο ή ίσο με |
2 >= 2 (true) |
if και else
Μια εντολή υπό συνθήκη εκτελεί κώδικα με βάση το αν μια συνθήκη αξιολογείται σε true ή false.
Η πιο συνηθισμένη εντολή υπό συνθήκη είναι η εντολή if, η οποία εκτελεί ένα μπλοκ κώδικα μόνο όταν η συνθήκη της είναι true.
Για να γράψεις μια εντολή if, χρησιμοποιείς τη λέξη-κλειδί if, ακολουθούμενη από τη συνθήκη και το μπλοκ κώδικα μέσα σε άγκιστρα:
let wheelCount = 4
if wheelCount == 4 {
print("Your vehicle is a car")
}
// Prints "Your vehicle is a car"
Μπορείς να συνδυάσεις το if με μια ρήτρα else, ώστε να εκτελέσεις εναλλακτικό κώδικα όταν η συνθήκη είναι 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"
Για να ελέγξεις πολλαπλές συνθήκες διαδοχικά, αλυσίδωσε τις εντολές μεταξύ τους με το else if.
Μια εντολή if δεν απαιτεί κλάδο else, αλλά μπορείς να συμπεριλάβεις έναν, για να χειριστείς τις περιπτώσεις όπου καμία συνθήκη δεν ταιριάζει:
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
Στη σύγχρονη Swift, οι εντολές if μπορούν επίσης να χρησιμοποιηθούν ως εκφράσεις που παράγουν μια τιμή.
Κάθε κλάδος αξιολογείται σε μια τιμή, κάτι που κάνει εύκολη την ανάθεση αποτελεσμάτων υπό συνθήκη:
let cpuBits = 32
let architecture = if cpuBits == 64 {
"x86_64"
} else {
"x86_32"
}
print(architecture)
// Prints "x86_32"
Ο τριαδικός τελεστής υπό συνθήκη είναι ένας σύντομος τρόπος να γράψεις μια έκφραση if-else.
Αξιολογεί μια συνθήκη και επιστρέφει μία από δύο τιμές, ανάλογα με το αν η συνθήκη είναι true ή false.
Ο τελεστής χρησιμοποιεί τρία μέρη: condition ? trueExpression : falseExpression.
Αν το condition αξιολογηθεί σε true, τότε αξιολογείται και επιστρέφεται το trueExpression· διαφορετικά, αξιολογείται και επιστρέφεται το falseExpression.
Ο τριαδικός τελεστής είναι ιδανικός για απλές επιλογές σε μία γραμμή:
let showFahrenheit = true
let temperatureInCelsius = 30
let temperature = showFahrenheit ? temperatureInCelsius * 9 / 5 + 32 : temperatureInCelsius
print(temperature)
// Prints 86
Το παραπάνω παράδειγμα είναι μια συμπαγής ισοδύναμη εκδοχή του παρακάτω κώδικα:
let showFahrenheit = true
let temperatureInCelsius = 30
let temperature = if showFahrenheit {
temperatureInCelsius * 9 / 5 + 32
} else {
temperatureInCelsius
}
Σε αυτή την άσκηση, θα γράψεις λίγο κώδικα για να σε βοηθήσει να προετοιμαστείς για την αγορά ενός οχήματος.
Έχεις τρεις εργασίες: μία για να υπολογίσεις αν μπορείς να ανταπεξέλθεις στις μηνιαίες δόσεις ενός αυτοκινήτου, μία για να καθορίσεις ποιο δίπλωμα οδήγησης θα χρειαστείς και μία για να εκτιμήσεις την αποδεκτή τιμή για ένα μεταχειρισμένο όχημα.
Οι αντιπρόσωποι αυτοκινήτων στην πόλη σου προσφέρουν όλοι μια πενταετή προσφορά με 0% τόκο, την οποία θα ήθελες να εκμεταλλευτείς. Αλλά δεν είσαι σίγουρος αν μπορείς να ανταπεξέλθεις στις μηνιαίες δόσεις για το αυτοκίνητο που θέλεις.
Η μηνιαία δόση είναι η συνολική τιμή του αυτοκινήτου διαιρεμένη με τον αριθμό των μηνών της πενταετίας.
Υλοποίησε τη συνάρτηση canIBuy(vehicle:price:monthlyBudget:) που δέχεται τα παρακάτω ορίσματα:
vehicle - Το όνομα του οχήματος που θέλεις να αγοράσεις.price - Η τιμή του οχήματος που θέλεις να αγοράσεις.monthlyBudget - Το χρηματικό ποσό που μπορείς να πληρώνεις κάθε μήνα.Η συνάρτηση θα πρέπει να επιστρέφει το παρακάτω μήνυμα ανάλογα με τις ακόλουθες συνθήκες:
"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"
Έχεις αποφασίσει να αγοράσεις ένα μεταχειρισμένο όχημα και πρέπει να καθορίσεις τι τύπο διπλώματος οδήγησης θα χρειαστείς για να το οδηγήσεις.
Υλοποίησε τη συνάρτηση licenseType(numberOfWheels:) που δέχεται το όρισμα numberOfWheels, το οποίο είναι ο αριθμός των τροχών του οχήματος που θέλεις να αγοράσεις.
Η συνάρτηση θα πρέπει να επιστρέφει το παρακάτω μήνυμα ανάλογα με τις ακόλουθες συνθήκες:
"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"
Τώρα που πήρες την απόφασή σου, θέλεις να βεβαιωθείς ότι θα πάρεις μια δίκαιη τιμή στην αντιπροσωπεία. Εφόσον ενδιαφέρεσαι να αγοράσεις ένα μεταχειρισμένο όχημα, η τιμή εξαρτάται από το πόσο παλιό είναι το όχημα. Για μια πρόχειρη εκτίμηση, υπόθεσε ότι αν το όχημα είναι λιγότερο από 3 ετών, κοστίζει το 80% της αρχικής τιμής που είχε όταν ήταν ολοκαίνουργιο. Αν είναι τουλάχιστον 10 ετών, κοστίζει το 50%. Αν το όχημα είναι τουλάχιστον 3 ετών αλλά όχι μεγαλύτερο από 10 ετών, κοστίζει το 70% της αρχικής τιμής.
Υλοποίησε τη συνάρτηση calculateResellPrice(originalPrice:yearsOld:) που δέχεται τα ορίσματα originalPrice, το οποίο περιέχει την αρχική τιμή του οχήματος, και yearsOld, το οποίο περιέχει την ηλικία του οχήματος σε χρόνια.
Η συνάρτηση θα πρέπει να επιστρέφει την τιμή μεταπώλησης του οχήματος.
calculateResellPrice(originalPrice: 1000, yearsOld: 1)
// returns 800
calculateResellPrice(originalPrice: 1000, yearsOld: 5)
// returns 700
calculateResellPrice(originalPrice: 1000, yearsOld: 15)
// returns 500
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Swift με 35 έννοιες116 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.