در این تکلیف شما درباره آرایهها و لیستها میآموزید، شما راههای مختلفی برای ساختن حلقهها در زبان برنامه نویسی کاتلین میآموزید.
گام 1: چند لیست بسازید
لیستها یک نوع اساسی در کاتلین هستند، و شبیه به لیستها در سایر زبانهای برنامه نویسی هستند.
1. یک لیست با استفاده از listOf بسازید و آن را چاپ کنید. این لیست نمیتواند تغییر کند.
val school = listOf("mackerel", "trout", "halibut") println(school) ⇒ [mackerel, trout, halibut]
2. با استفاده از mutableListOf یک لیست اعلام کنید که که بتواند تغییر کند . سپس یک مورد را حذف کنید.
val myList = mutableListOf("tuna", "salmon", "shark") myList.remove("shark") ⇒ res36: kotlin.Boolean = true
متد ()remove وقتی موفق به حذف مورد واگذار شده شود، مقدار true را برمیگرداند.
با یک لیست که val تعریف شده باشد، نمیتوانید لیستی که متغیر به آن مراجعه میکند را عوض کنید، اما میتوانید محتوای لیست را تغییر دهید.
گام 2: ساختن آرایهها
مثل سایر زبانها، کاتلین آرایههایی دارد. برخلاف لیستها در کاتلین،که نسخههای تغییر پذیر(mutable) و تغییر ناپذیر دارند، هیچ نسخه تغییر پذیری از Array وجود ندارد. زمانی که شما یک آرایه میسازید، اندازه آن ثابت است. شما نمیتوانید به لیست عنصر اضافه کنید یا از لیست عنصر کم کنید، مگر با رونویسی (کپیکردن) آرایه به یک آرایه جدید.
قوانین استفاده از val و var برای آرایهها، مانند لیستها است.
با یک آرایه که val تعریف شده باشد، نمیتوانید آرایهای که متغیر به آن مراجعه میکند را عوض کنید، اما میتوانید محتوای آرایه را تغییر دهید.
1. با استفاده از arrayOf یک آرایه از رشتهها اعلام کنید. از ابزار ()java.util.Arrays.toString استفاده کنید و آن را چاپ کنید.
val school = arrayOf("shark", "salmon", "minnow") println(java.util.Arrays.toString(school)) ⇒ [shark, salmon, minnow]
2. یک آرایه اعلام شده با arrayOf ارتباط نوعی با عنصرها ندارد، پس شما میتوانید انواع را مخلوط کنید، که کاربردی است. یک آرایه با انواع مختلف اعلام کنید.
val mix = arrayOf("fish", 2)
3. شما میتوانید آرایهها را با یک نوع عنصر اعلام کنید. با ()intArrayOf یک آرایه از اعداد صحیح (Integer) اعلام کنید.
val numbers = intArrayOf(1,2,3)
استفاده از آرایه با انواع اولیه مثل Int و Byte از دردسر جعبهسازی (boxing) میکاهد.
4. دو آرایه را با استفاده از عملگر + ترکیب کنید.
val numbers = intArrayOf(1,2,3) val numbers3 = intArrayOf(4,5,6) val foo2 = numbers3 + numbers println(foo2[5]) => 3
5. ترکیبات مختلف از آرایههای پیچیده و لیستهای پیچیده را امتحان کنید. مانند سایر زبانها میتوانید آرایهها و لیستها را تو در تو بسازید. یعنی، وقتی یک آرایه را درون یک آرایه قرار میدهید، یک آرایه از آرایهها دارید - نه یک آرایه تخت از محتوای دو آرایه. عنصرهای یک آرایه میتوانند لیستها باشند، و عنصرهای لیستها میتوانند آرایه باشند.
val numbers = intArrayOf(1, 2, 3) val oceans = listOf("Atlantic", "Pacific") val oddList = listOf(numbers, oceans, "salmon") println(oddList) ⇒ [[I@89178b4, [Atlantic, Pacific], salmon]
اولین عنصر، numbers، یک Array است. وقتی از ابزار آرایه برای چاپ کردن استفاده نکنید، کاتلین به جای محتوای آرایه، آدرس را چاپ میکند.
6. یک ویژگی خوب کاتلین این است که میتوانید آرایهها را با کد مقدار دهی اولیه کنید، به جای اینکه آنها را با 0 آغاز کنید.
val array = Array (5) { it * 2 } println(java.util.Arrays.toString(array)) ⇒ [0, 2, 4, 6, 8]
کد مقدار دهی اولیه بین آکولاد است، {}. داخل کد، it به شاخص [اشارهگر] آرایه اشاره دارد، که با 0 شروع میشود.
گام 3: حلقه بسازید
حالا که میتوانید لیست و آرایه بسازید، حلقه زدن روی عنصرها همانطور که فکر میکنید انجام میشود.
1. یک آرایه بسازید. از یک حلقه for برای تکرار کردن حلقه روی آرایه و چاپ عنصرها استفاده کنید.
val school = arrayOf("shark", "salmon", "minnow") for (element in school) { print(element + " ") } ⇒ shark salmon minnow
2. در کاتلین، شما میتوانید روی عنصرها و اشارهگر به طور همزمان حلقه بزنید. این مثال را امتحان کنید:
for ((index, element) in school.withIndex()) { println("Item at $index is $element\n") } ⇒ Item at 0 is shark Item at 1 is salmon Item at 2 is minnow
3. اندازه گامها و محدودههای متفاوت را امتحان کنید. شما میتوانید محدودهای از اعداد یا کاراکترها مشخص کنید. و مثل سایر زبانها، نیازی به یک گام (step) نیست. همچنین میتوانید با downTo به عقب گام بردارید.
for (i in 1..5) print(i) ⇒ 12345
for (i in 5 downTo 1) print(i) ⇒ 54321
for (i in 3..6 step 2) print(i) ⇒ 35
for (i in 'd'..'g') print (i) ⇒ defg
4. حلقهها را امتحان کنید. مثل سایر زبانها، کاتلین حلقههای while، حلقه do...while، و عملگرهای ++ و -- دارد. کاتلین حلقههای repeat هم دارد.
var bubbles = 0 while (bubbles < 50) { bubbles++ } println("$bubbles bubbles in the water\n") do { bubbles-- } while (bubbles > 50) println("$bubbles bubbles in the water\n") repeat(2) { println("A fish is swimming") } ⇒ 50 bubbles in the water 49 bubbles in the water A fish is swimmingA fish is swimming