[swift-evolution] Immutable Structures

Lino Rosa lino.aguiar.rosa at gmail.com
Wed Dec 23 10:00:43 CST 2015


Reassigning structures will create new ones. Mutating functions and
reassigning its properties won't: they mutate it.
On Wed, Dec 23, 2015 at 10:51 AM Ian Ynda-Hummel <ianynda at gmail.com> wrote:

> I thought structures were immutable and mutating functions actually just
> created new structures, thus maintaining the by value semantics.
> On Wed, Dec 23, 2015 at 10:45 AM Lino Rosa via swift-evolution <
> swift-evolution at swift.org> wrote:
>
>> I believe the language would be improved by making structures immutable.
>>
>> 1) The choice between classes and structures isn’t clear right now. If
>> structures were immutable it would be natural to use them as value objects.
>>
>> 2) Refactoring a mutable structure into a class when it’s being passed
>> around multiple threads removes the by-value semantics seamlessly. The
>> resulting mutable class isn’t thread-safe.
>>
>> 2.1) Even when passed around a single thread, the resulting class would
>> be passed by reference, so any mutations would have unintended consequences.
>>
>> 3) We could probably remove some syntax: `mutating` keyword and variable
>> parameters. Also the `var` keyword before a structure could be used to
>> denote reassignment (not mutability), just as it does with classes.
>>
>> Of corse I might not be seeing the whole picture, so please weigh in.
>>
> _______________________________________________
>> 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/20151223/58068f12/attachment.html>


More information about the swift-evolution mailing list