Sent from my iPad

> On Dec 23, 2015, at 3:57 PM, Douglas Gregor via swift-evolution 
> <[email protected]> wrote:
> 
> 
>> On Dec 23, 2015, at 7:44 AM, Lino Rosa via swift-evolution 
>> <[email protected]> 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’s structures, enums, and standard library collections provide value 
> semantics, which is far more useful than true immutability because it gives 
> you immutability guaranteed when you want them (“let”) and efficient local 
> mutation when you need it (“var”) . If you haven’t seen the “Building Better 
> Apps with Value Types in Swift” talk from WWDC 2015, I suggest you check it 
> out to get a sense of how value types work in Swift:
> 
>    https://developer.apple.com/videos/play/wwdc2015-414/
> 
> We’re very happy with value semantics as a programming model, so the 
> likelihood of moving to a model where a value of struct type is always 
> immutable is effectively zero. My hope is that the talk above—or other 
> resources about value semantics in Swift—will convince you as thoroughly as 
> it convinced us ;)

+1,000,000.  This is one of the best aspects of Swift IMO.


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

Reply via email to