Az összehasonlító operátorok két azonos típusú értéket hasonlítanak össze, és egy Bool értéket (true vagy false) adnak vissza.
Ha különböző típusú értékeket próbálsz összehasonlítani, a fordító hibát jelez.
A Swift szabványos összehasonlító operátorai:
| Operátor | Leírás | Példa |
|---|---|---|
== |
egyenlő |
1 == 1 (igaz) |
!= |
nem egyenlő |
1 != 2 (igaz) |
< |
kisebb, mint |
4 < 5 (igaz) |
<= |
kisebb vagy egyenlő |
4 <= 4 (igaz) |
> |
nagyobb, mint |
3 > 1 (igaz) |
>= |
nagyobb vagy egyenlő |
2 >= 2 (igaz) |
A feltételes utasítás attól függően futtat kódot, hogy egy feltétel true vagy false értékre értékelődik-e ki.
A leggyakoribb feltételes utasítás az elágazás, amely csak akkor futtat egy kódblokkot, ha a feltétel true.
Egy if elágazást az if kulcsszóval írsz le, utána a feltétel, majd a kapcsos zárójelbe zárt kódblokk következik:
let wheelCount = 4
if wheelCount == 4 {
print("Your vehicle is a car")
}
// Prints "Your vehicle is a car"
Az if párosítható egy else ággal, hogy alternatív kódot futtass, amikor a feltétel 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"
Több feltétel egymás utáni ellenőrzéséhez láncold össze az elágazásokat else if segítségével.
Az if elágazáshoz nem kötelező else ág, de hozzáadhatsz egyet, hogy kezeld azokat az eseteket, amikor egyik feltétel sem teljesül:
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"
A modern Swiftben az if elágazások olyan kifejezésként is használhatók, amelyek értéket állítanak elő.
Minden ág egy értékre értékelődik ki, így könnyen rendelhetsz értéket feltételesen:
let cpuBits = 32
let architecture = if cpuBits == 64 {
"x86_64"
} else {
"x86_32"
}
print(architecture)
// Prints "x86_32"
A ternáris feltételes operátor egy if-else kifejezés tömör rövidítése.
Kiértékel egy feltételt, és két érték közül az egyiket adja vissza attól függően, hogy a feltétel true vagy false.
Az operátor három részből áll: condition ? trueExpression : falseExpression.
Ha a condition true értékre értékelődik ki, akkor a trueExpression értékelődik ki és kerül visszaadásra, ellenkező esetben pedig a falseExpression.
A ternáris operátor ideális egyszerű, egysoros választásokhoz:
let showFahrenheit = true
let temperatureInCelsius = 30
let temperature = showFahrenheit ? temperatureInCelsius * 9 / 5 + 32 : temperatureInCelsius
print(temperature)
// Prints 86
A fenti példa tömör megfelelője az alábbi kódnak:
let showFahrenheit = true
let temperatureInCelsius = 30
let temperature = if showFahrenheit {
temperatureInCelsius * 9 / 5 + 32
} else {
temperatureInCelsius
}
Ebben a feladatban kódot írsz majd, hogy felkészülj egy jármű megvásárlására.
Három részfeladat vár rád: az első segít eldönteni, hogy megengedheted-e magadnak a választott járművet, a második, hogy meghatározd, milyen jogosítványra lesz szükséged, a harmadik pedig, hogy megbecsüld egy használt jármű elfogadható árát.
A városod autókereskedései mind ötéves, 0%-os kamatú akciót kínálnak, amit szeretnél kihasználni. De nem vagy biztos benne, hogy megengedheted-e magadnak a kiszemelt autó havi törlesztőrészleteit.
A havi törlesztőrészlet az autó teljes ára osztva az ötéves időszak hónapjainak számával.
Valósítsd meg a canIBuy(vehicle:price:monthlyBudget:) függvényt, amely a következő argumentumokat veszi át:
vehicle - A megvásárolni kívánt jármű neve.price - A megvásárolni kívánt jármű ára.monthlyBudget - Az az összeg, amit havonta megengedhetsz magadnak.A függvény az alábbi feltételek alapján a következő üzenetet adja vissza:
"Yes! I'm getting a <vehicle>" üzenetet."I'll have to be frugal if I want a <vehicle>" üzenetet."Darn! No <vehicle> for me" üzenetet.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"
Úgy döntöttél, hogy használt járművet veszel, és meg kell határoznod, milyen típusú jogosítvány kell a vezetéséhez.
Valósítsd meg a licenseType(numberOfWheels:) függvényt, amely a numberOfWheels argumentumot veszi át, ami a megvásárolni kívánt jármű kerekeinek száma.
A függvény az alábbi feltételek alapján a következő üzenetet adja vissza:
"You will need a motorcycle license for your vehicle" üzenetet."You will need an automobile license for your vehicle" üzenetet."You will need a commercial trucking license for your vehicle" üzenetet."We do not issue licenses for those types of vehicles" üzenetet.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"
Most, hogy meghoztad a döntésedet, szeretnéd biztosítani, hogy tisztességes árat kapj a kereskedésben. Mivel használt járművet szeretnél venni, az ár attól függ, milyen idős a jármű. Durva becsléshez tételezd fel, hogy ha a jármű kevesebb mint 3 éves, az eredeti, vadonatúj kori árának 80%-ába kerül. Ha legalább 10 éves, 50%-ba kerül. Ha a jármű legalább 3 éves, de nem idősebb 10 évnél, az eredeti ár 70%-ába kerül.
Valósítsd meg a calculateResellPrice(originalPrice:yearsOld:) függvényt, amely az originalPrice és a yearsOld argumentumokat veszi át; előbbi a jármű eredeti árát, utóbbi a jármű korát tárolja években.
A függvény a jármű viszonteladási árát adja vissza.
calculateResellPrice(originalPrice: 1000, yearsOld: 1)
// returns 800
calculateResellPrice(originalPrice: 1000, yearsOld: 5)
// returns 700
calculateResellPrice(originalPrice: 1000, yearsOld: 15)
// returns 500
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Swift nyelvet 35 fogalom116 feladat segítségével, valódi emberi mentorálással, mindez ingyen.