[swift-evolution] [Accepted] SE-0111: Remove type system significance of function argument labels

David Owens II david at owensd.io
Mon Jul 11 01:19:56 CDT 2016


> On Jul 10, 2016, at 11:09 PM, Mark Lacey <mark.lacey at apple.com> wrote:
> 
> In the meantime one option here would be to define a nested function that invokes the callback. It results in boilerplate, which is unfortunate, but would work:
> 
> func doResize
> (
>   image: Image,
>   completed completedParam: (original: Image, resized: Image) -> Void
> ) {
>   func completed(original: Image, resized: Image) {
>     completedParam(original, resized)
>   }
> 
>   // do lots of work
> 
>   completed(original: image, resized: Image(data: newData, size: newSize))
> }

That doesn’t solve anything; you still have to write the nested function, which means you still need to know what the order is. That’s only going to come through the documentation or non-compiler verified labels.

It also doesn’t help the call site for `doResize` - you’ll still get the non-descript `(Image, Image)` values.

-David



More information about the swift-evolution mailing list