
در ادامه بخش کنترل روند از دوره آموزش جامع زبان کاتلین، در این قسمت در مورد عبارت when در کاتلین و کاربردها مختلف آن صحبت میکنیم.
به طور کلی عبارت when در کاتلین به نوعی میتواند همانند دستور switch در جاوا به حساب بیاید.
با یک مثال ساده این دستور را مورد بررسی قرار می دهیم.
در کد زیر یک عملگر از کاربر درخواست می شود و با کمک عبارت when و عملگر وارد شده، عمل مورد نظر روی دو متغیر a و b صورت می گیرد.
val a = 12 val b = 5 println("Enter operator either +, -, * or / ") val result = when (readLine()) { "+" -> a + b "-" -> a - b "*" -> a * b "/" -> a / b else -> "invalid input." } println("result = $result")
اگر برنامه را اجرا کنیم و در ورودی مثلا * را وارد کنیم، خروجی به صورت زیر خواهد بود:
Enter operator either +, -, * or / * result = 60
در کد بالا، عبارت when عملگر وارد شده را بررسی میکند و با هر کدام از موارد موجود که مطابقت داشته باشد، کد مربوط به آن را اجرا میکند. اگر ورودی کاربر با هیچکدام از موارد موجود مطابقت نداشته باشد، کد مربوط به else را اجرا میکند.
در کد بالا از دستور when به صورت یک عبارت (expression) استفاده کردیم اما لزومی ندارد که همیشه این کار را انجام بدهیم. میتوانیم به صورت زیر نیز از آن استفاده کنیم:
val a = 12 val b = 5 println("Enter operator either +, -, * or /") when (readLine()) { "+" -> println("$a + $b = ${a + b}") "-" -> println("$a - $b = ${a - b}") "*" -> println("$a * $b = ${a * b}") "/" -> println("$a / $b = ${a / b}") else -> println("invalid input") }
اگر کد را اجرا کنیم و برای مثال در ورودی عملگر تفریق را وارد کنیم، خروجی به صورت زیر خواهد بود:
Enter operator either +, -, * or / - 12 - 5 = 7
در این کد، از دستور when به عنوان یک عبارت (expression) استفاده نکردیم (یعنی دستور when مقدار برگشتی ندارد یا مقدار آن به هیچ متغیری داده نشده است)
در حالتی که از دستور when به عنوان اکسپرشن استفاده نمیکنیم، میتوانیم قسمت else را نگذاریم.
مثال هایی از عبارت when در کاتلین
در ادامه به کاربردهای مختلف عبارت when در کاتلین می پردازیم و مثال های مختلفی را مورد بررسی قرار میدهیم
استفاده از یک کد برای چند شرط متفاوت و جدا کردن آنها با کاما
val n = -1 when (n) { 1, 2, 3 -> println("n is a positive integer less than 4.") 0 -> println("n is zero") -1, -2 -> println("n is a negative integer greater than 3.") }
در کد بالا مشاهده میکنید که برای سه آپشن 1 و 2 و 3 فقط یک کد اجرا می شود. همچنین برای 1- و 2- . از این دستور می توان در بسیاری از حالت های مشابه که برای چند گزینه یک کد یکسان اجرا می شود استفاده کرد.
بررسی وجود مقدار در یک بازه عددی
میتوان با کمک عبارت when بررسی کرد که آیا عدد مورد نظر در یک بازه خاص قرار دارد یا خیر.
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)") }
استفاده از یک عبارت (expression) در شاخه های دستور when
val a = 11 val n = "11" when (n) { "cat" -> println("Cat? Really?") 12.toString() -> println("Close but not close enough.") a.toString() -> println("Bingo! It's eleven.") }
بررسی وجود داده در یک کالکشن
val a = 5 val b = arrayOf(1,2,3,4,5,6,7,8,9) val x = when(a){ in b -> "Single Digit" in 10..100 -> "Two Digit" else -> "Other" } println(x)
استفاده از when بدون شرط
val a = 5 val b = arrayOf(1,2,3,4,5,6,7,8,9) val x = when { a < 10 -> "a is small" b.size < 0 -> "b is not empty" a in b -> "a is in b" else -> "None" } println(x)
کد چند خطی در عبارت when در کاتلین
var a = 5 when(a) { 10 -> print(a) in -10..-1 -> { println("$a is negative") a += 10 } else -> { println(a) println("Nothing to show here") } }
جمع بندی
عبارت when در کاتلین یکی از دستورات کاربردی و مهم می باشد و همانطور که مشاهده کردید میتوان از آن در موقعیت های بسیاری استفاده کرد.
0 پاسخ به "عبارت when در کاتلین"