Vergleichsoperatoren vergleichen zwei Werte des gleichen Typs und geben einen Bool-Wert (true oder false) zurück.
Wenn du Werte unterschiedlicher Typen vergleichst, gibt der Compiler einen Fehler aus.
Die Standardvergleichsoperatoren in Swift sind:
| Operator | Beschreibung | Beispiel |
|---|---|---|
== |
Gleich |
1 == 1 (true) |
!= |
Ungleich |
1 != 2 (true) |
< |
Kleiner als |
4 < 5 (true) |
<= |
Kleiner oder gleich |
4 <= 4 (true) |
> |
Größer als |
3 > 1 (true) |
>= |
Größer oder gleich |
2 >= 2 (true) |
Eine Bedingte Anweisung führt Code aus, je nachdem, ob eine Bedingung zu true oder false ausgewertet wird.
Die häufigste Bedingte Anweisung ist die if-Anweisung, die einen Block Code nur dann ausführt, wenn ihre Bedingung true ist.
Schreibe eine if-Anweisung mit dem Schlüsselwort if, gefolgt von der Bedingung und dem Block in geschweiften Klammern:
let wheelCount = 4
if wheelCount == 4 {
print("Your vehicle is a car")
}
// Prints "Your vehicle is a car"
Du kannst if mit einem else-Zweig kombinieren, um alternativen Code auszuführen, wenn die Bedingung false ist:
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"
Um mehrere Bedingungen nacheinander zu prüfen, verkettest du Anweisungen mit else if.
Eine if-Anweisung benötigt keinen else-Zweig, aber du kannst einen angeben, um Fälle abzudecken, in denen keine der Bedingungen zutrifft:
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"
In modernem Swift kannst du if-Anweisungen auch als Ausdrücke verwenden, die einen Wert liefern.
Jeder Zweig ergibt einen Wert, sodass du Ergebnisse einfach bedingt zuweisen kannst:
let cpuBits = 32
let architecture = if cpuBits == 64 {
"x86_64"
} else {
"x86_32"
}
print(architecture)
// Prints "x86_32"
Der Ternäre Bedingungsoperator ist eine knappe Kurzform für einen if-else-Ausdruck.
Er wertet eine Bedingung aus und gibt einen von zwei Werten zurück, je nachdem, ob diese Bedingung true oder false ist.
Der Operator besteht aus drei Teilen: condition ? trueExpression : falseExpression.
Ergibt condition den Wert true, wird trueExpression ausgewertet und zurückgegeben; andernfalls wird falseExpression ausgewertet und zurückgegeben.
Der ternäre Operator eignet sich ideal für einfache Entscheidungen in einer Zeile:
let showFahrenheit = true
let temperatureInCelsius = 30
let temperature = showFahrenheit ? temperatureInCelsius * 9 / 5 + 32 : temperatureInCelsius
print(temperature)
// Prints 86
Das obige Beispiel ist eine kompakte Entsprechung zu:
let showFahrenheit = true
let temperatureInCelsius = 30
let temperature = if showFahrenheit {
temperatureInCelsius * 9 / 5 + 32
} else {
temperatureInCelsius
}
In dieser Übung schreibst du etwas Code, um dich darauf vorzubereiten, ein Fahrzeug zu kaufen.
Du hast drei Aufgaben: eine, um zu berechnen, ob du dir die monatlichen Raten leisten kannst, eine, um zu bestimmen, welchen Führerschein du brauchst, und eine, um den akzeptablen Preis für ein gebrauchtes Fahrzeug zu schätzen.
Die Autohändler in deiner Stadt bieten alle eine fünfjährige Finanzierung mit 0 % Zinsen an, die du gerne nutzen würdest. Aber du bist dir nicht sicher, ob du dir die monatlichen Raten für das Auto leisten kannst, das du willst.
Die monatliche Rate ist der Gesamtpreis des Autos geteilt durch die Anzahl der Monate im Fünfjahreszeitraum.
Implementiere die Funktion canIBuy(vehicle:price:monthlyBudget:), die die folgenden Argumente entgegennimmt:
vehicle – Der Name des Fahrzeugs, das du kaufen möchtest.price – Der Preis des Fahrzeugs, das du kaufen möchtest.monthlyBudget – Der Geldbetrag, den du monatlich zahlen kannst.Die Funktion soll abhängig von den folgenden Bedingungen die folgende Nachricht zurückgeben:
"Yes! I'm getting a <vehicle>" zurück."I'll have to be frugal if I want a <vehicle>" zurück."Darn! No <vehicle> for me" zurück.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"
Du hast dich entschieden, ein gebrauchtes Fahrzeug zu kaufen, und musst bestimmen, welchen Führerschein du brauchst, um es zu fahren.
Implementiere die Funktion licenseType(numberOfWheels:), die das Argument numberOfWheels entgegennimmt, die Anzahl der Räder des Fahrzeugs, das du kaufen möchtest.
Die Funktion soll abhängig von den folgenden Bedingungen die folgende Nachricht zurückgeben:
"You will need a motorcycle license for your vehicle" zurück."You will need an automobile license for your vehicle" zurück."You will need a commercial trucking license for your vehicle" zurück."We do not issue licenses for those types of vehicles" zurück.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"
Jetzt, da du deine Entscheidung getroffen hast, möchtest du sicherstellen, dass du beim Händler einen fairen Preis bekommst. Da du ein gebrauchtes Fahrzeug kaufen möchtest, hängt der Preis davon ab, wie alt das Fahrzeug ist. Für eine grobe Schätzung nimm an, dass das Fahrzeug, wenn es weniger als 3 Jahre alt ist, 80 % des ursprünglichen Preises kostet, den es als Neuwagen hatte. Wenn es mindestens 10 Jahre alt ist, kostet es 50 %. Wenn das Fahrzeug mindestens 3 Jahre alt, aber nicht älter als 10 Jahre ist, kostet es 70 % des ursprünglichen Preises.
Implementiere die Funktion calculateResellPrice(originalPrice:yearsOld:), die die Argumente originalPrice (den ursprünglichen Preis des Fahrzeugs) und yearsOld (das Alter des Fahrzeugs in Jahren) entgegennimmt.
Die Funktion soll den Wiederverkaufspreis des Fahrzeugs zurückgeben.
calculateResellPrice(originalPrice: 1000, yearsOld: 1)
// returns 800
calculateResellPrice(originalPrice: 1000, yearsOld: 5)
// returns 700
calculateResellPrice(originalPrice: 1000, yearsOld: 15)
// returns 500
Melde dich bei Exercism an, um Swift mit 35 Konzepte116 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.