Seems like it should work. Maybe it is a bug that should be reported to SR.

Does this error occur for non-failable initializers?
On Sat, Mar 11, 2017 at 12:33 AM David Sweeris via swift-evolution <
swift-evolution@swift.org> wrote:

> Is this a feature or a bug?
>
> class Foo {
>     let bar: Int
>     init?(someConditionBasedOnInputData: Bool) {
>         var localBar: Int = 0
>         defer {
>             bar = localBar //Cannot assign to property: 'bar' is a 'let'
> constant
>         }
>         if someConditionBasedOnInputData {
>             return nil
>         }
>     }
> }
>
> It’d be handy to be able to do the assignment upfront in a defer block in
> cases where there’s both a bunch of validation to do on the input data, and
> no harm from assigning the interim values to the final values when you’re
> about to return nil anyway.
>
> - Dave Sweeris
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to