ارسال آرگومان به روش مقدار
ارسال آرگومانها به روش مقدار، بدان معناست که شما یک کپی از مقدار متغیر را ارسال میکنید، نه اصل متغیر یا ارجاع به آن را. در این حالت وقتی که آرگومان ارسال شده را در داخل تابع اصلاح میکنیم، مقدار اصلی آرگومان در خارج از تابع تغییر نمیکند. اجازه دهید که ارسال با مقدار آرگومان را با یک مثال توضیح دهیم:
1: fun modifyNumberVal(number: Int) 2: { 3: var number = number 4: number += 10 5: println("Value of number inside method is $number") 6: } 7: 8: fun main(args: Array<String>) 9: { 10: val num = 5 11: println("num = $num\n") 12: 13: println("Passing num by value to method modifyNumberVal() ...") 14: modifyNumberVal(num) 15: println("Value of num after exiting the method is $num") 16: }
num = 5 Passing num by value to method modifyNumberVal() ... Value of number inside method is 15. Value of num after exiting the method is 5.
در برنامه بالا، تابعی تعریف شده است که کار آن اضافه کردن عدد 10 به مقداری است که به آنها ارسال میشود (خطوط 7-1). این تابع دارای یک پارامتر است که نیاز به یک مقدار آرگومان (از نوع Int) دارد. وقتی که تابع را صدا میزنیم و آرگومانی به آن اختصاص میدهیم (خط 14)، کپی آرگومان به پارامتر تابع ارسال میشود. بنابراین مقدار اصلی متغیر خارج از تابع، هیچ ارتباطی به پارامتر تابع ندارد. سپس مقدار 10 را به متغیر پارامتر (number) اضافه کرده و نتیجه را چاپ میکنیم. برای اثبات اینکه متغیر num هیچ تغییری نکرده است مقدار آن را یکبار قبل از ارسال به تابع (خط 11) و بار دیگر بعد از ارسال به تابع (خط 15) چاپ کرده و مشاهده میکنیم که تغییری نکرده است.