در این بخش از مقاله آموزش کاتلین به کمک برخی مثالها به بررسی شیوه استفاده از عبارت if در کاتلین میپردازیم.
کاربرد سنتی if…else
ساختار if…else به صورت زیر است:
if (testExpression) { // codes to run if testExpression is true
}
else { // codes to run if testExpression is false
}
عبارت if در صورتی که مقدار testExpression به صورت true ارزیابی شود، بخش خاصی از کد را اجرا میکند. در صورتی یک بند اختیاری else وجود داشته باشد، کدهای درون بند else در صورتی اجرا میشوند که مقدار testExpression به صورت false ارزیابی شود.
مثالی از کاربرد سنتی if…else
fun main(args: Array<String>) {
val number = -10
if (number > 0) { print("Positive number") } else { print("Negative number") }
}
خروجی اجرای کد فوق به صورت زیر است:
Negative number
عبارت if در کاتلین
برخلاف جاوا و دیگر زبانهای برنامهنویسی، عبارت if در کاتلین میتواند در یک عبارت و نه گزاره نیز مورد استفاده قرار گیرد. به مثال زیر توجه کنید:
مثالی از عبارت if در کاتلین
fun main(args: Array<String>) {
val number = -10
val result = if (number > 0) { "Positive number" } else { "Negative number" }
println(result)
}
با اجرای کد فوق، خروجی زیر روی صفحه نمایش مییابد:
Negative number
شاخه esle کد در صورت استفاده از if به صورت یک عبارت، ضروری خواهد بود. اگر بدنه if مانند مثال زیر، تنها یک گزاره داشته باشد، استفاده از آکولادها، اختیاری خواهد بود:
fun main(args: Array<String>) { val number = -10 val result = if (number > 0) "Positive number" else "Negative number" println(result)
}
این رفتار مشابه عملگر سهتایی در جاوا است. از این رو در کاتلین هیچ عملگر سهتایی وجود ندارد.
مثالی از بلوک if با عبارتهای چندگانه
اگر یک شاخه از بلوک if شامل بیش از یک عبارت باشد، آخرین عبارت به عنوان مقدار بلوک بازگشت مییابد.
fun main(args: Array<String>) {
val a = -9 val b = -11
val max = if (a > b) { println("$a is larger than $b.") println("max variable holds value of a.") a } else { println("$b is larger than $a.") println("max variable holds value of b.") b } println("max = $max")
}
خروجی کد فوق به صورت زیر است:
-9 is larger than -11. max variable holds value of a. max = -9
ساختار if..else..if در کاتلین
در کاتلین امکان بازگشت یک بلوک از کد در میان بلوکهای متعدد به صورت زیر با استفاده از ساختار if..else…if وجود دارد.
مثالی از ساختار if..else…if
fun main(args: Array<String>) {
val number = 0
val result = if (number > 0) "positive number" else if (number < 0) "negative number" else "zero" println("number is $result")
}
برنامه بررسی میکند که آیا Number یک عدد مثبت، یک عدد منفی یا صفر است.
عبارت if تودرتو در کاتلین
بک عبارت if را میتوان درون بلوک یک عبارت if دیگر قرار دارد. این وضعیت به نام عبارت if تودرتو شناخته میشود.
مثالی از عبارت if تودرتو
برنامه زیر بزرگترین عدد را در میان سه عدد پیدا میکند.
fun main(args: Array<String>) {
val n1 = 3 val n2 = 5 val n3 = -2
val max = if (n1 > n2) { if (n1 > n3) n1 else n3 } else { if (n2 > n3) n2 else n3 }
println("max = $max")
}
خروجی کد فوق به صورت زیر است:
max = 5