در این تکلیف، درباره تابع ها در کاتلین بیشتر یاد میگیرید، و درباره عبارت شرطی when بیشتر میآموزید.
گام 1: چند تابع بسازید
در این گام، شما مقداری از آنچه آموختید را ترکیب میکنید و تابعهایی از انواع مختلف میسازید. شما میتوانید محتوای Hello.kt را با این کد جدید جایگزین کنید.
1. یک تابع به نام ()feedTheFish بسازید که ()randomDay را صدا میزند تا یک روز تصادفی از هفته را بگیرد. از یک قالب رشته برای چاپ کردن یک food برای ماهی در روز گرفته شده استفاده کنید. حالا، ماهی هر روز یک غذا را میخورد.
fun feedTheFish() { val day = randomDay() val food = "pellets" println ("Today is $day and the fish eat $food") } fun main(args: Array<String>) { feedTheFish() }
2. تابع ()randomDay را برای انتخاب یک روز تصادفی از آرایه و برگرداندن آن استفاده کنید.
تابع ()nextInt یک محدوده عددصحیح را میگیرد، که عدد حاصل از ()Random را بین 0 تا 6 محدود میکند که با اندازه آرایه week مطابق است.
fun randomDay() : String { val week = arrayOf ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday") return week[Random().nextInt(week.size)] }
3. تابع ()Random و ()nextInt در *.java.util تعریف شده هستند. در بالای فایل، واردات (import) مورد نیاز را انجام دهید:
import java.util.* // required import
پیش از اینکه واردات را انجام دهید، ()Random یک خطای مرجع حل نشده در IntelliJ IDEA نمایش میدهید. برای افزودن خودکار واردات، روی ()Random کلیک کنید، سپس Alt+Enter را فشار دهید. مسیر Import > java.util.Random را انتخاب کنید.
4. برنامه را اجرا کنید، خروجی را چک کنید.
⇒ Today is Tuesday and the fish eat pellets
گام 2: از یک عبارت when استفاده کنید
در ادامه، کد را برای انتخاب غذای متفاوت برای روزهای متفاوت با استفاده از حکم when تغییر دهید. حکم when مثل switch در سایر زبانهای برنامه نویسی است، اما when در انتهای هر بخش قطع میشود. این دستور همچنین مطمئن میشود که کد شما همه بخشها را چک میکند اگر شما در حال چک کردن یک enum (شمردنی) هستید.
1. در Hello.kt یک تابع به نام ()fishFood اضافه کنید که یک روز را به عنوان String میگیرد و غذای ماهی برای روز را به عنوان String باز میگرداند. از ()when استفاده کنید، تا ماهی برای هر روز غذای مشخصی داشته باشد. برنامه را چند بار اجرا کنید تا خروجی های مختلف را ببینید.
fun fishFood (day : String) : String { var food = "" when (day) { "Monday" -> food = "flakes" "Tuesday" -> food = "pellets" "Wednesday" -> food = "redworms" "Thursday" -> food = "granules" "Friday" -> food = "mosquitoes" "Saturday" -> food = "lettuce" "Sunday" -> food = "plankton" } return food } fun feedTheFish() { val day = randomDay() val food = fishFood(day) println ("Today is $day and the fish eat $food") } ⇒ Today is Thursday and the fish eat granules
2. با استفاده از else یک بخش پیش فرض به عبارت when اضافه کنید. برای امتحان کردن مقدار پیش فرض بخشهای Tuesday و Saturday را حذف کنید.
داشتن یک بخش پیش فرض به شما اطمینان میدهد که food قبل بازگردانده شدن یک مقدار میگیرد. زیرا کد حالا فقط یک بار به food رشته اختصاص میدهد، شما میتوانید food را با val به جای var اعلام کنید.
fun fishFood (day : String) : String { val food : String when (day) { "Monday" -> food = "flakes" "Wednesday" -> food = "redworms" "Thursday" -> food = "granules" "Friday" -> food = "mosquitoes" "Sunday" -> food = "plankton" else -> food = "nothing" } return food }
3. چون هر عبارت یک مقدار دارد، شما میتوانید این کد را مختصر کنید. مقدار عبارت when را مستقیم برگردانید، و متغیر food را حذف کنید. مقدار عبارت when، مقدار آخرین عبارت بخشی است که با شرط برابر است.
fun fishFood (day : String) : String { return when (day) { "Monday" -> "flakes" "Wednesday" -> "redworms" "Thursday" -> "granules" "Friday" -> "mosquitoes" "Sunday" -> "plankton" else -> "nothing" } }
نسخه نهایی برنامه شما مثل کد پایین است:
import java.util.* // required import fun randomDay() : String { val week = arrayOf ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday") return week[Random().nextInt(week.size)] } fun fishFood (day : String) : String { return when (day) { "Monday" -> "flakes" "Wednesday" -> "redworms" "Thursday" -> "granules" "Friday" -> "mosquitoes" "Sunday" -> "plankton" else -> "nothing" } } fun feedTheFish() { val day = randomDay() val food = fishFood(day) println ("Today is $day and the fish eat $food") } fun main(args: Array<String>) { feedTheFish() }