[swift-users] Protocols, `mutating` and Value vs Reference Types.

Hooman Mehr hooman at mac.com
Fri Apr 29 20:48:13 CDT 2016

Thank you very much for your response. I made the change in the gist <https://gist.github.com/hooman/2b74d9756976a43330c1acfcfba699f3>. This takes me back to the same error that forced my into duplication path:

“Cannot assign through subscript: ‘self’ is immutable” for the object case.

The gist <https://gist.github.com/hooman/2b74d9756976a43330c1acfcfba699f3> is self contained if you want to compile it yourself.

Is this some kind of bug or the expected behavior?

> On Apr 29, 2016, at 5:28 PM, Dave Abrahams via swift-users <swift-users at swift.org> wrote:
> on Fri Apr 29 2016, Hooman Mehr <swift-users-AT-swift.org> wrote:
>> Hi,
>> I am designing APIs that need to support both reference (class/object) and value
>> types. I am running into restrictions of `mutating` keyword in my protocols and
>> this is causing a lot of duplication of code. In order to understand what I mean
>> please take a look at this gist. 
>> As you see, I have pairs of almost identical declarations: KeyValueStore vs
>> KeyValueStoreObject, and AnyDictionaryStore vs AnyDictionaryStoreObject. This
>> keeps rapidly growing as I am designing my APIs. Is there any sane way around
>> this?
> protocol KeyValueStoreObject : class, KeyValueStore {}
> protocol AnyDictionaryStoreObject : class, AnyDictionaryStore {}
> would probably work for you.
> HTH,
> -- 
> Dave
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20160429/790f3c2e/attachment.html>

More information about the swift-users mailing list