> On 22 déc. 2015, at 12:02, Matthew Johnson <matt...@anandabits.com> wrote:
> 
> This is not an attempt to subvert `let` properties.  The `= 1` in the 
> declaration can very reasonably be viewed as a default value that should be 
> used if the member is not otherwise initialized.

I see it as a definition.


> Why would you have an immutable instance member that is always going to have 
> a constant value of 1?

I’m not convinced the language must prevent people from doing useless things.
The current model is clear. The one you suggest is much murkier.
(And this is a kind of situation where I would expect nifty optimizations.)


> That just wastes space by duplicating the constant value in many instances.  
> However it is quite reasonable to have an immutable instance member that 
> defaults to 1, but may have a different value depending on the initializer 
> that is used for the instance.

Shouldn’t one write an initializer with a default value, then?

struct A {
 let property: Int
 init(property: Int = 1) { self.property = property }
}

Much clearer. Using initialized `let` properties as a mere suggestion involves 
mental gymnastics.

Guillaume Lessard

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to