[swift-evolution] [Pitch] Replace 'inout' with '&'

Dmitri Gribenko gribozavr at gmail.com
Sat Dec 19 21:12:54 CST 2015


On Sat, Dec 19, 2015 at 7:06 PM, Jordan Rose via swift-evolution <
swift-evolution at swift.org> wrote:

> -1 to using '&' in the declaration; it's a sigil that doesn't mean
> anything as is. (I was originally on the side of using 'inout' at the call
> site as well, i.e. "swap(inout x, inout y)", but it was considered too
> verbose.)
>

I'd actually suggest that we reconsider this.  '&' at the callsite has deep
associations with C semantics, and I have too frequently seen buggy code
using '&x' combined with one of the C interop implicit conversions to "get
a pointer" that the code stores in a variable somewhere.  It is also hard
to explain to people that '&x' does not do what they want in that case, "&
means address-of, and it returns a pointer here, what do you mean I can't
use it?"

Dmitri

-- 
main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
(j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151219/92c95d72/attachment.html>


More information about the swift-evolution mailing list