তুলনার অপারেটর একই টাইপের দুটি মান তুলনা করে এবং একটি Bool মান (true বা false) রিটার্ন করে।
ভিন্ন টাইপের মান তুলনা করার চেষ্টা করলে কম্পাইলার একটি এরর দেয়।
Swift-এ স্ট্যান্ডার্ড তুলনার অপারেটরগুলো হলো:
| অপারেটর | বিবরণ | উদাহরণ |
|---|---|---|
== |
সমান |
1 == 1 (ট্রু) |
!= |
অসমান |
1 != 2 (ট্রু) |
< |
থেকে ছোট |
4 < 5 (ট্রু) |
<= |
থেকে ছোট বা সমান |
4 <= 4 (ট্রু) |
> |
থেকে বড় |
3 > 1 (ট্রু) |
>= |
থেকে বড় বা সমান |
2 >= 2 (ট্রু) |
একটি কন্ডিশনাল স্টেটমেন্ট কোনো শর্ত true না false-এ মূল্যায়িত হয়, তার ভিত্তিতে কোড চালায়।
সবচেয়ে কমন কন্ডিশনালটি হলো if স্টেটমেন্ট, যা কেবল তখনই কোডের একটি ব্লক চালায় যখন তার শর্ত true হয়।
if কিওয়ার্ড দিয়ে একটি if স্টেটমেন্ট লিখুন, যার পরে থাকে শর্ত এবং দ্বিতীয় বন্ধনীর ভেতরে আবদ্ধ কোড ব্লক:
let wheelCount = 4
if wheelCount == 4 {
print("Your vehicle is a car")
}
// Prints "Your vehicle is a car"
শর্তটি false হলে বিকল্প কোড চালানোর জন্য আপনি if-এর সাথে একটি else ক্লজ যুক্ত করতে পারেন:
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"
আধুনিক 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
}
এই অনুশীলনীতে আপনি কিছু কোড লিখবেন, যা একটি যানবাহন কেনার প্রস্তুতি নিতে আপনাকে সাহায্য করবে।
আপনার তিনটি কাজ রয়েছে: একটি হলো আসলে আপনার একটি যানবাহন দরকার হবে কি না তা নির্ধারণ করা এবং দুইটি যানবাহনের মধ্যে বেছে নিতে সাহায্য করা, আপনি কোন ধরনের ড্রাইভিং লাইসেন্স নিতে হবে তা নির্ধারণ করা, এবং একটি হলো একটি ব্যবহৃত যানবাহনের গ্রহণযোগ্য দাম অনুমান করা।
আপনার শহরের গাড়ির ডিলাররা সবাই পাঁচ বছরের, ০% সুদের একটি প্রোমোশন চালাচ্ছে, যার সুযোগ আপনি নিতে চান। কিন্তু আপনি যে গাড়িটি চান, তার মাসিক পেমেন্ট আপনি দিতে পারবেন কি না, তা নিয়ে আপনার নিশ্চয়তা নেই।
মাসিক পেমেন্ট হলো গাড়ির মোট দামকে পাঁচ বছরের সময়কালের মধ্যে পড়া মাসের সংখ্যা দিয়ে ভাগ করলে যা হয়।
নিচের আর্গুমেন্টগুলো নেয় এমন 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"
আপনি একটি ব্যবহৃত যানবাহন কেনার সিদ্ধান্ত নিয়েছেন, আর এটি চালাতে আপনার কোন ধরনের ড্রাইভিং লাইসেন্স লাগবে তা নির্ধারণ করতে হবে।
numberOfWheels আর্গুমেন্টটি নেয় এমন 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"
এখন যেহেতু আপনি সিদ্ধান্ত নিয়ে ফেলেছেন, আপনি নিশ্চিত হতে চান যে ডিলারশিপে আপনি ন্যায্য দামই পাচ্ছেন। যেহেতু আপনি একটি ব্যবহৃত যানবাহন কিনতে আগ্রহী, তাই দাম নির্ভর করে যানবাহনটির বয়সের উপর। মোটামুটি একটি অনুমানের জন্য ধরে নিন, যানবাহনটির বয়স যদি ৩ বছরের কম হয়, তাহলে এর দাম একেবারে নতুন থাকা অবস্থায় তার মূল দামের ৮০%। যদি এর বয়স কমপক্ষে ১০ বছর হয়, তাহলে দাম ৫০%। আর যানবাহনটির বয়স কমপক্ষে ৩ বছর কিন্তু ১০ বছরের বেশি না হলে, দাম মূল দামের ৭০%।
originalPrice ও yearsOld আর্গুমেন্ট নেয় এমন 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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।