when در کاتلین چیستوچگونه استفاده میشود؟
شاید قبلا با ساختار های کنترلی اعم از if ، else if و حلقه ها مانند for ، while و … آشنا شده باشید . دستور when در کاتلین نیز یک ساختار کنترلی است و یک تفاوت کلی که با سایر ساختار های کنترلی دارد ، آنهم این است که به شما انتخاب های بیشتری میدهد در واقع نوعی حلقه if تودرتو میباشد با این تفاوت که در دستور when متغیر فقط مقادیر ثابتی از اعداد، رشتهها و یا کاراکترها را قبول میکند. مقادیر ثابت مقادیری هستند که قابل تغیر نیستند.
اگر قبلا آموزش جاوا را دیده باشید باید بدانید که دستور when در کاتلین همان دستور switch در زبان برنامه نویسی جاوا است و همان کار ها را انجام میدهد. البته when یکسری قابلیت های اضافه تری از دستور switch دارد که در ادامه چند مورد از آنها را مقایسه میکنیم.
مطالب مرتبط : آموزش استفاده از عملگر های ریاضی در کاتلین | آموزش مقدماتی کاتلین |درس دوم
تفاوتهای اصلی بین دستور when و switch عبارتند از:
از جمله تفاوت های مهم دستور when با switch این است که دستور when میتواند مقادیری غیر از مقادیر ثابت را نیز قبول کند. به عنوان مثال، دستور when میتواند یک متغیر، یک تابع یا یک شیء را نیز قبول کند. دستور when میتواند چندین مقدار را در یک case قبول کند. مثلا ما میتوانیم به کمک این دستور یکسری مقدار ، مثلا 1، 2 و 3 را در یک case قبول کنیم . در ادامه چندین مورد از استفاده از آن را برای شما میآوریم.
- در این نمونه از استفاده های دستور when ما یک مقدار ثابت پاس میدهیم و اگربا مقداری از Case ها برابر باشد پیام مخصوص به آن را برای ما برمیگرداند.
1 2 3 4 5 6 7 8 9 10 11 |
val dayOfWeek = "شنبه" when (dayOfWeek) { "شنبه" -> println("امروز شنبه است !") "یکشنبه" -> println("امروز یکشنبه است !") "دوشنبه" -> println("امروز دوشنبه است !") "سه شنبه" -> println("امروز سه شنبه است !") "چهارشنبه" -> println("امروز چهارشنبه است !") "پنج شنبه" -> println("امروز پنج شنبه است !") "جمعه" -> println("امروز جمعه است !") } |
- مورد دیگری که در آن از دستور when استفاده میکنند برای برسی یک مقدار در یک بازه است . مثلا یک عدد 21 میدهیم تا چک کند ببیند این عدد در بازه 20 تا 30 یا 30 تا 40 و ….. است .
1 2 3 4 5 6 7 8 9 10 11 12 13 |
val number = 21 when (number) { in 20..30 -> println("این عدد بین بازه 20 تا 30 می باشد ") in 31..40 -> println("این عدد بین بازه 30 تا 40 می باشد .") in 41..50 -> println("این عدد بین بازه 40 تا 50 است.") } |
- در زمان هایی که لازم است یک مقدار را با یک شی بررسی کنیم .
1 2 3 4 5 6 7 |
val color = Color.BLACK when (color) { Color.RED -> println("این رنگ قرمز است ") Color.WHITE -> println("این رنگ سفید است") Color.YELLOW -> println("این رنگ زرد است") } |
- مواقعی لازم است تا یک تابع را برحسب یک مقدار اجرا کنیم .
1 2 3 4 5 6 7 |
val number = 11.5 when (number) { is Int -> println("این مقدار یک عدد صحیح است .") is Float -> println("این مقدار یک عدد اعشاری است .") is String -> println("این مقدار یک رشته است .") } |
- زمان های هم لازم است یک مقداری را برگردانیم. در همان مثال بالا اگر مقدار متغیر برابر یکی از شرط ها بود مقداری برگردانده میشود و در یک متغیر دیگر ذخیره میشود .
1 2 3 4 5 6 7 8 |
val number = 11.5 val result=when (number) { is Int -> "این مقدار یک عدد صحیح است ." is Float -> "این مقدار یک عدد اعشاری است ." is String -> "این مقدار یک رشته است ." } Toast.makeText(this,"Result : "+result,Toast.LENGTH_LONG).show() |
مطالب مرتبط : پیاده سازی متغیر ها در کاتلین | آموزش مقدماتی کاتلین | درس اول
خلاصه مطالب
دستور when در کاتلین از سری دستورات شرطی مانند if ها تودرتو میباشد و عملکردی مانند switch در زبان برنامه نویسی جاوا را دارد اما خیلی کاملا و انعطاف پذیر تر از آن است .
دیدگاهتان را بنویسید