ارسال آرایه به عنوان آرگومان

می‌توان آرایه‌ها را به عنوان آرگومان به تابع ارسال کرد. ابتدا شما باید پارامترهای تابع را طوری تعریف کنید که آرایه دریافت کنند. به مثال زیر توجه کنید.

  1: fun TestArray(numbers: IntArray) 
  2: {
  3:     for (number in numbers)
  4:     {
  5:         println(number)
  6:     }
  7: }
  8: 
  9: fun main(args: Array<String>) 
 10: {
 11:     val array = intArrayOf(1, 2, 3, 4, 5)
 12:     TestArray(array)
 13: }
1
2
3
4
5

مشاهده کردید که به سادگی می‌توان نوع داده‌ای پارامتر را به صورت آرایه تعریف کرد. این کار باعث می شود که پارامتر، آرایه دریافت کند. وقتی تابع در خط 12 فراخوانی می‌شود، آرایه را فقط با استفاده از نام آن و بدون استفاده از اندیس ارسال می‌کنیم. پس آرایه‌ها به روش ارجاع به تابعها ارسال می‌شوند. در خطوط 6-3 از حلقه for برای دسترسی به اجزای اصلی آرایه که به عنوان آرگومان به تابع ارسال کرده‌ایم، استفاده می‌کنیم. در زیر نحوه ارسال یک آرایه به روش ارجاع نشان داده شده است:

  1: fun IncrementElements(numbers: IntArray)
  2: {
  3:     for (i in numbers.indices)
  4:     {
  5:         numbers[i]++
  6:     }
  7: }
  8: 
  9: fun main(args: Array<String>)
 10: {
 11:     val array = intArrayOf(1, 2, 3, 4, 5)
 12: 
 13:     IncrementElements(array)
 14: 
 15:     for (num in array)
 16:     {
 17:         println(num)
 18:     }
 19: }
2
3
4
5
6

برنامه بالا، یک تابع را نشان می‌دهد که یک آرایه را دریافت می‌کند و به هر یک از عناصر آن یک واحد اضافه می‌کند. در داخل تابع ما مقادیر هر یک از اجزای آرایه را افزایش داده‌ایم. سپس از تابع خارج شده و نتیجه را نشان می‌دهیم. مشاهده می‌کنید که هر یک از مقادیر اصلی تابع هم اصلاح شده‌اند. راه دیگر برای ارسال آرایه به تابع، مقدار دهی مستقیم به تابع فراخوانی شده است.
به عنوان مثال :

IncrementElements(intArrayOf(1, 2, 3, 4, 5))

در این روش، ما آرایه‌ای از مقادیر را به پارامتر ارسال می‌کنیم. از آنجاییکه در این روش آرایه‌ای تعریف نکرده‌ایم، نمی‌توانیم در تابع main نتیجه را چاپ کنیم. اگر از چندین پارامتر در تابع استفاده می‌کنید، همیشه برای هر یک از پارامترهایی که آرایه قبول می‌کنند، باید نوع آنها را به صورت آرایه تعریف کنید. به عنوان مثال :

fun myFunction(param1: IntArray, param2: Int)
{
    //code here
}

به پارامترهای تابع بالا توجه کنید، پارامتر اول (param1) آرگومانی از جنس آرایه قبول می‌کند ولی پارامتر دوم (param2) یک عدد صحیح. حال اگر پارامتر دوم (param2) هم آرایه قبول می‌کرد باید نوع آن را به صورت آرایه تعریف می کردیم:

fun myFunction(param1: IntArray, param2: IntArray)
{
    //code here
}