حلقه for

یکی دیگر از ساختارهای تکرار، حلقه for است. این حلقه عملی شبیه به حلقه while انجام می‌دهد و از آن برای گردش در میان یک مجموعه (collection) یا محدوده (range) استفاده می شود. ساختار حلقه for به صورت زیر است :

for (item in collection/range)
{ 
    //Some Code
}

در زیر یک مثال از حلقه for آمده است:

 1: fun main(args: Array<String>)
 2: {
 3:     for (i in 1..10)
 4:     {
 5:         println("Number $i")
 6:     }
 7: }
Number 1
Number 2
Number 3
Number 4
Number 5
Number 6
Number 7
Number 8
Number 9
Number 10

برنامه بالا اعداد 1 تا 10 را با استفاده از حلقه for چاپ می کند. در خط 3 و داخل پرانتز همانطور که مشاهده می کنید عبارت 10..1 آمده است که در اصل یک محدود است. برای ایجاد یک محدوده در کوتلین ابتدا و انتهای مجموعه را مشخص کرده و سپس با استفاده از علامت .. از هم جدا می کنیم. عبارت 10..1 به معنای محدود اعداد از 1 تا 10 است. در کل معنای خط 3 این است که به ازای اعداد 1 تا 10 … فلان کار را انجام بده. چه کاری؟ کاری که در خط 5 خواسته ایم و آن چاپ مقدار اعداد این محدود است. در اصل در خط 3 با هر تکرار یکی از اعداد مجموعه در داخل متغیر موقتی i قرار می گیرد و در خط 5 چاپ می شود و این کار تا چاپ آخرین مقدار یعنی 10 ادامه می یابد. اگر بخواهید عدد انتهای محدود یعنی 10 چاپ نشود باید از کلمه until استفاده نمایید:

for (i in 1 until 10)

و اگر بخواهید معکوس برنامه بالا را پیاده سازی کنید، یعنی اعداد از بزرگ به کوچک چاپ شوند، باید خط 3 را به صورت زیر تغییر دهید :

for (i in 10 downTo 1) 

عبارت downTo به معنای رو به پایین است و معنای کلی خط بالا : “به ازای اعداد از 10 تا 1” می باشد. حال فرض کنید که می خواهید چند عدد در میان این محدود را چاپ کنید. برای این منظور از کلمه step باید استفاده نمایید:

for (i in 1..10 step 2)

کد بالا یک در میان اعداد را چاپ می کند. برای مثلا 2 در میان یا سه در میان کافیست عدد جلوی این کلمه را به 2 یا 3 و یا هر عددی که مایل هستید، تغییر دهید. از حلقه for برای چاپ حروف یک رشته هم می توان استفاده کرد. چون رشته یک مجموعه از کاراکترهاست:

fun main(args: Array<String>)
{
    for (letter in "Hello World!")
    {
        println(letter)
    }
}
H
e
l
l
o
 
W
o
r
l
d
!