Variadic functions — swift

In computer programming, a variadic function is a function which accepts a variable number of arguments. The function arguments are represented by (three period characters) after the argument’s type that can be accessed into their body as an array .

You might have used a print statement in swift. It looks like this:

print(“apple”,”pineapple”,”orange”)

This is a variadic function which accepts parameter of type Any .

Image for post
Image for post
From Apple docs

According to apple docs: The values passed to a variadic parameter are made available within the function’s body as an array of the appropriate type. For example, a variadic parameter with a name of numbers and a type of Double... is made available within the function’s body as a constant array called numbers of type [Double].

Playground code [Example] :

func printFruitNames (_ fruits: String...) -> () {for fruit in fruits { // fruits is a string arrayprint(“\(fruit)”)}}printFruitNames(“apple”,”pineapple”,”orange”)

Note: We cannot have more than one variadic parameter in a function parameter.

If we try to add more than one variadic parameter in a function, the compiler will throw error like (in playground):

Error: only a single variadic parameter ‘…’ is permitted.

The example below calculates the arithmetic mean (also known as the average) for a list of numbers of any length (from apple docs):

func arithmeticMean(_ numbers: Double...) -> Double {var total: Double = 0for number in numbers {total += number}return total / Double(numbers.count)}arithmeticMean(1, 2, 3, 4, 5)// returns 3.0, which is the arithmetic mean of these five numbersarithmeticMean(3, 8.25, 18.75)// returns 10.0, which is the arithmetic mean of these three numbers

Enjoy!!

Written by

iOS and tvOS developer, dreamer, photographer 🤨

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store