آموزش زبان کاتلین – درس ۹ (when)

نویسنده : سید ایوب کوکبی ۷ آبان ۱۳۹۷

آموزش زبان کاتلین – درس 9 (when)

ساختار when در کاتلین مشابه Switch در جاوا است. در ادامه با مثال‌های مختلف، طرز استفاده از آن را توضیح می‌دهم. کدها ساده هستند و با بررسی‌شان موضوع را متوجه می‌شوید. با این حال اگر سوالی داشتید کامنت بگذارید.

fun main(args: Array<String>) {

val a = 12
val b = 5

println(“Enter operator either +, -, * or /”)
val operator = readLine()

val result = when (operator) {
“+” -> a + b
“-” -> a – b
“*” -> a * b
“/” -> a / b
else -> “$operator operator is invalid operator.”
}

println(“result = $result”)
}

 

خروجی:

Enter operator either +, -, * or /
*
result = 60

 

در کد بالا ابتدا یک رشته توسط کاربر از ورودی دریافت می‌شود. فرض کنید * وارد شود. در این حالت عبارت a*b ارزیابی شده و مقدارش به متغیر result اختصاص داده می‌شود. در صورتی که ورودی هیچ یک از موارد تعیین شده (* – + /) نباشد، قسمت else اجرا می‌شود. همانطور که می‌بینید در کد بالا از when به شکل عبارت استفاده شده ولی ضرورتی به آن نیست. در کاتلین می‌توانید when را اینطور هم استفاده کنید:

fun main(args: Array<String>) {

val a = 12
val b = 5

println(“Enter operator either +, -, * or /”)
val operator = readLine()

when (operator) {
“+” -> println(“$a + $b = ${a + b}”)
“-” -> println(“$a – $b = ${a – b}”)
“*” -> println(“$a * $b = ${a * b}”)
“/” -> println(“$a / $b = ${a / b}”)
else -> println(“$operator is invalid”)
}
}

 

خروجی:

Enter operator either +, -, * or /
–
۱۲ – ۵ = ۷

 

اینجا when دیگر به شکل عبارت نیست، یعنی مقداری را به متغیر اختصاص نمی‌دهد. بخش else در اینجا اختیاری است.

ترکیب دو یا چند شرط با کاما در کاتلین

fun main(args: Array<String>) {
val n = -1

when (n) {
۱, ۲, ۳ -> println(“n is a positive integer less than 4.”)
۰ -> println(“n is zero”)
-۱, -۲ -> println(“n is a negative integer greater than 3.”)
}
}

 

بخوانید  پیش گفتار:چرا من باید برنامه نویس اندروید بشم؟!

خروجی:

n is a negative integer greater than 3.

 

بررسی مقدار در یک محدوده

fun main(args: Array<String>) {

val a = 100

when (a) {
in 1..10 -> println(“A positive number less than 11.”)
in 10..100 -> println(“A positive number between 10 and 100 (inclusive)”)
}
}

 

خروجی:

A positive number between 10 and 100 (inclusive)

 

ارزیابی نوع مقادیر

شما می‌توانید با توجه به نوع مقدار، شاخه مورد نظر را در when اجرا کنید. مثلاً اگر مقدار مورد نظر ما نوعش Int بود فلان دستور را اجرا کن:

when (x) {
is Int -> print(x + 1)
is String -> print(x.length + 1)
is IntArray -> print(x.sum())
}

 

استفاده از عبارات در شرط

fun main(args: Array<String>) {

val a = 11
val n = “۱۱”

when (n) {
“cat” -> println(“Cat? Really?”)
۱۲٫toString() -> println(“Close but not close enough.”)
a.toString() -> println(“Bingo! It’s eleven.”)
}
}

 

خروجی

Bingo! It’s eleven.

 

 

سید ایوب کوکبی

نویسنده و مترجم...

0 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *