[swift-evolution] Proposal: Allow "flat" declaration of nested types
Rien
Rien at Balancingrock.nl
Mon Nov 21 05:09:14 CST 2016
> On 21 Nov 2016, at 11:52, Jeremy Pereira <jeremy.j.pereira at googlemail.com> wrote:
>
>
>> On 21 Nov 2016, at 08:42, Rien via swift-evolution <swift-evolution at swift.org> wrote:
>>
>> Sure you can do that, but I rather write:
>>
>> struct A.B {…}
>>
>> than
>>
>> extension A { struct B {…} }
>>
>> The first seems much “swiftier” to me.
>
> Hmm, objectively, it’s not “swiftier” is it, because Swift has had the extension syntax since day 1 and not the dot syntax. What you actually mean is “it looks nicer to me” which is an entirely subjective position, one with which I agree, but I don’t think such arguments should carry much weight.
>
> Actually, I’d like to see “it seems more swifty” and equivalent expressions banned from the list. The concept isn’t well enough defined for a serious discussion on the merits of proposed language features. /rant
Agreed, won’t use it anymore.
In swift the dot-notation seems to be the preferred way of expressing hierarchical relationships. Why not allow the use of the dot-notation for inner-type definitions?
>> In fact, now that this “obvious” dot-notation has been pointed out, I wonder why this was not the initial implementation instead of the “extension” keyword.
>
> The extension keyword is needed in the case where you are extending an existing type to conform to a protocol. Given that we already have (and need) the extension form and we can already do
>
> extension A.B { struct C { … } }
>
> is there an objective justification for adding a redundant way of doing the same thing?
I do not see it as the same thing.
Creating an extension for a protocol is conceptually different from defining an inner type.
It is common to use a different syntax for same-functionaly if the underlying concept is different enough. For example the “if” and “guard” statements.
Regards,
Rien
Site: http://balancingrock.nl
Blog: http://swiftrien.blogspot.com
Github: http://github.com/Swiftrien
Project: http://swiftfire.nl
More information about the swift-evolution
mailing list