> On 17 May 2016, at 15:48, Neil Faiman <n...@faiman.org> wrote: > > On May 17, 2016, at 7:03 AM, Jeremy Pereira <jeremy.j.pere...@googlemail.com> > wrote: > >> >>> On 16 May 2016, at 22:37, Neil Faiman via swift-users >>> <swift-users@swift.org> wrote: >>> >>> Using the default Swift with Xcode 7.3.1. >>> >>> It appears that you cannot use the implicit memberwise initializer with a >>> struct that has “let” properties with default values. >>> >>> >> >> It’s not a default value, it is *the* value >> >>> >>> I don’t believe that the Apple _The Swift Programming Language_ mentions >>> this restriction. >> >> Chapter “The Basics”, section “Constants and Variables” >> >> “The value of a constant cannot be changed once it is set”. > > But: > > “You can provide a default value for a stored property as part of its > definition, as described in Default Property Values. You can also set and > modify the initial value for a stored property during initialization. This is > true even for constant stored properties, as described in Assigning Constant > Properties During Initialization.” (Classes and Structures / Stored > Properties)
And did you try clicking through to “Assigning Constant Properties During Initialisation”? It says this: “Once a constant property is assigned a value, it cannot be further modified” I would argue that in struct A { let foo = 42 } foo has been assigned a value and cannot be further modified. The only way your interpretation can work is if the assignment in the declaration line is deemed to occur somehow before initialisation, which is a valid interpretation, but since struct A { let foo = 42 init(foo: Int) { self.foo = foo } } is an error, it looks like the compiler writers went with my interpretation. I certainly concede that it looks like the passage you found contradicts the two passages I found. Perhaps one of us should raise a bug to clarify the meaning and - if you are correct - fix the compiler. _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users