[swift-evolution] [Proposal Draft] Flexible memberwise initialization
Félix Cloutier
felixcca at yahoo.ca
Tue Dec 22 13:23:35 CST 2015
I would like let rules to be consistent whether you have a memberwise init or not; and I would like them to be consistent with classes.
I think this places me on Guillaume's side here.
Félix
> Le 22 déc. 2015 à 14:20:47, Guillaume Lessard via swift-evolution <swift-evolution at swift.org> a écrit :
>
>
>> On 22 déc. 2015, at 12:02, Matthew Johnson <matthew at 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 at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
More information about the swift-evolution
mailing list