CarmeloS CarmeloS - 7 months ago 11
Swift Question

Swift: function with default parameter before non-default parameter

say I have a function that has non-default parameter after default parameter like this:

func f(first:Int = 100, second:Int){}


how can I call it and use the default value for the first parameter?

Answer

The current compiler does allow default parameters in the middle of a parameter list.

screenshot of Playground

You can call the function like this if you want to use the default value for the first parameter:

f(1)

If you want to supply a new value for the first parameter, use its external name:

f(first: 3, 1)

The documentation explains that parameters with a default value are automatically given an external name:

Swift provides an automatic external name for any defaulted parameter you define, if you do not provide an external name yourself. The automatic external name is the same as the local name, as if you had written a hash symbol before the local name in your code.

Comments