if و when؛ دوراهیهای زندگی کد
برنامه بدون شرط مثل رانندهایه که چراغ قرمز و سبز براش یکیه؛ خطرناک و پرحاشیه.
if فقط دستور نیست؛ عبارت هم هست
در کاتلین `if` میتونه خروجی برگردونه. یعنی لازم نیست الکی متغیر بسازی و بعد مقدار بدی. تمیز و شستهرفته؛ نه مثل کدی که انگار با دمپایی نوشته شده.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
fun main() {
val score = 82
val result = if (score >= 60) "قبول" else "رد"
println(result)
}
قبول
when؛ سوئیچ با کلاس
`when` نسخهی خوشتیپتر switch در زبانهای دیگهست. هم خواناست، هم انعطافپذیر. وقتی چند حالت داری، بهجای if تو در تو از when استفاده کن؛ کدت نفس میکشه.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
fun main() {
val day = 5
val name = when (day) {
1 -> "شنبه"
2 -> "یکشنبه"
3 -> "دوشنبه"
4 -> "سهشنبه"
5 -> "چهارشنبه"
else -> "تعطیل یا نامشخص"
}
println(name)
}
چهارشنبه
رنجها داخل when
میتونی با `in` بازه چک کنی. این برای امتیاز، سن، سطح دسترسی و هزار چیز دیگه به کارت میاد.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
val age = 16
val group = when (age) {
in 0..12 -> "کودک"
in 13..17 -> "نوجوان"
else -> "بزرگسال"
}
group = نوجوان
نتیجه این درس 🎯
if و when فقط برای دوراهی ساده نیستند؛ چون expression هستند میتوانند مقدار تولید کنند. همین باعث میشود کد کوتاهتر و خواناتر بماند.
تمرین! 🧠
برنامهای بنویس که نمره را بگیرد و وضعیت عالی، خوب، قبول یا رد چاپ کند.
fun main() {
print("نمره: ")
val score = readln().toInt()
val status = when (score) {
in 90..100 -> "عالی، ترکوندی!"
in 75..89 -> "خوب، قابل احترام"
in 60..74 -> "قبول، ولی جا داری"
else -> "رد، برو یه چایی بخور دوباره بخون"
}
println(status)
}
نمره: 92 عالی، ترکوندی!