Variadic Functions

Variadic Functions امکان ارسال تعداد دلخواه پارامترهای همنوع و ذخیره آنها در یک آرایه ساده را فراهم می‌آورد. برای ایجاد تابعی که به تعداد دلخواه پارامتر دریافت کند، از علامت سه نقطه (…) به صورت زیر استفاده می‌شود :

func functionName (vaiableName :dataType...) -> dataType
{
   ...
}

همانطور که در کد بالا مشاهده می کنید، کافیست، آرگومان هایی که تابع قرار است دریافت کن را به صورت …vaiableName :dataType بنویسید. یعنی یک نام، سپس نوع متغیرها و در نهایت علامت … را ذکر کنید. به مثال زیر توجه کنید:

 1: func CalculateSum(numbers: Int...) -> Int
 2: {
 3:     var total :Int = 0
 4: 
 5:     for num in numbers 
 6:     {
 7:         total += num
 8:     }
 9:     return total
10: }
11: 
12: print("1 + 2 + 3         = ", CalculateSum(numbers: 1, 2, 3))
13: print("1 + 2 + 3 + 4     = ", CalculateSum(numbers: 1, 2, 3, 4))
14: print("1 + 2 + 3 + 4 + 5 = ", CalculateSum(numbers: 1, 2, 3, 4, 5))
1 + 2 + 3         = 6 
1 + 2 + 3 + 4     = 10 
1 + 2 + 3 + 4 + 5 = 15 

همانطور که در مثال بالا مشاهده می‌کنید، یک تابع به نام ()CalculateSum در خط 1 تعریف شده است. برای اینکه این تابع تعداد دلخواه پارامتر دریافت کند، از علامت سه نقطه (…) بعد از نوع داده‌ای پارامتر آن استفاده شده است. در اصل کلمه numbers یک آرایه است، که وقتی ما آرگومان‌ها را به تابع ارسال می‌کنیم، در این آرایه ذخیره می‌شوند. حال تابع را سه بار با تعداد مختلف آرگومانها فراخوانی می‌کنیم و سپس با استفاده از حلقه for این آرگومانها را جمع و به تابع فراخوان برگشت می‌دهیم. وقتی از چندین پارامتر در یک تابع استفاده می‌کنید، فقط یکی از آنها باید دارای علامت سه نقطه (…) باشد.