> On Dec 18, 2015, at 6:07 PM, Chris Lattner <[email protected]> wrote:
> 
> 
>> On Dec 18, 2015, at 5:23 PM, Joe Groff via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>> For Swift 3, we're planning to phase out 'var' parameters in functions, and 
>> we're also making it so that language keywords are valid argument labels. 
>> With both of these changes pending, I have a hard time not reading:
>> 
>> func foo(inout x: Int)
>> 
>> as an argument labeled `inout` instead of an unlabeled argument bound to 
>> `x`. Once `var` is phased out, `inout` would also be the only remaining case 
>> where quoting is necessary to use a name as an argument label. The `inout` 
>> keyword has always struck me as weird, since it violates 
>> definition-follows-use—maybe we should replace it with the `&` sigil, 
>> mirroring its usage in call sites.
> 
> -1
> 
> “inout” is intended to communicate (or at least hint at) the copy-in / 
> copy-out behavior of the argument.  It is also there to enable other 
> parameter modifiers, which can enable other more advanced parameters models 
> in the future (e.g. rust-style borrowing).

If we added those kinds of knobs, they'd almost certainly be @attributes IMO. A 
borrow model isn't really a core interface change the way `inout` is; it's a 
set of additional restrictions on use that let the compiler avoid unwanted 
retaining and copying.

-Joe

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to