[swift-evolution] [Discussion] Enforce argument labels on tuples

Austin Zheng austinzheng at gmail.com
Wed Apr 20 13:08:22 CDT 2016


The tuple splat feature you mention below ("foo(test1)", where test1 is a tuple ) is going away in Swift 3, as is the entire idea of modeling a function's list of formal parameters as a named tuple.

Aside from that, my personal opinion is that forcing a closure to take certain argument names is way too onerous a requirement for very little benefit. It would, for example, disqualify the use of the $x wildcards or the use of local argument names which more precisely represent the semantics of the closure. Function signatures are already very complicated, so I think any new attributes or flags should really have a strong argument to justify their inclusion.

Austin


> On Apr 20, 2016, at 10:59 AM, Adrian Zubarev via swift-evolution <swift-evolution at swift.org> wrote:
> 
> That’s why I’d like to discuss this topic and hear all your feedback.
> 
> Do you think it might be possible to add some optional extra flag to the language to enforce argument labeling. Not only for tuples as I started the discussion with but also for argument labels on blocks/closures?
> 
> ```swift
> 
> @require_argument_label
> func foo(tuple: (a: Int, b: Int)) { /* do some work */ }
> 
> // this will only work with
> 
> let test1 = (a: 1, b: 2)
> foo(test1)
> 
> func foo(block: (boo: Int) -> Void) { /* pass boo to block */ }
> 
> 
> foo() { boo in // do is enforced here
> 	/* do some work*/
> }
> 
> // or
> 
> foo() { (boo: Int) -> Void in
> 	/* do some work*/
> }
> ```
> 
> An extra flag won’t break any codebase and as an addition will allow some good looking syntax at some places.
> 
> -- 
> Adrian Zubarev
> 
> Am 20. April 2016 bei 19:47:03, Tino Heth (2th at gmx.de <mailto:2th at gmx.de>) schrieb:
> 
>> I think it's good that the labels aren't enforced: 
>> This would sacrifice flexibility, and force us to write unnecessary boilerplate to "translate" labels (one library might use (height, width), and another (h, w) to express the same concept…) 
>> 
>> But: Objective-C had no tuples, so a final decision shouldn't happen until there is an agreement on best-practices for them...
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160420/3a63f6b0/attachment.html>


More information about the swift-evolution mailing list