عوامل المقارنة تقارن قيمتين من النوع نفسه وتُرجع قيمة Bool (true أو false).
إذا حاولت المقارنة بين قيم من أنواع مختلفة، فسيُنتج المترجم خطأً.
عوامل المقارنة القياسية في Swift هي:
| العامل | الوصف | المثال |
|---|---|---|
== |
يساوي |
1 == 1 (صحيح) |
!= |
لا يساوي |
1 != 2 (صحيح) |
< |
أصغر من |
4 < 5 (صحيح) |
<= |
أصغر من أو يساوي |
4 <= 4 (صحيح) |
> |
أكبر من |
3 > 1 (صحيح) |
>= |
أكبر من أو يساوي |
2 >= 2 (صحيح) |
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 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.