+1. > On 25. Jul 2017, at 18:30, Taylor Swift via swift-evolution > <swift-evolution@swift.org> wrote: > > I’d be in favor of this. > > On Tue, Jul 25, 2017 at 5:44 AM, philohan95 via swift-evolution > <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: > I think the current way to initiate models in a Failable Initializer > `init?()` is overly verbose and should be shortened down so less boilerplate > should be needed. > > The current way: > > ``` > let someProperty: Any > let anotherProperty: Any > > init?(data: [String: Any]) { > guard > let someProperty = data["some_key"], > let anotherProperty = data["another_key"] > else { > return nil > } > > self. someProperty = someProperty > self. anotherProperty = anotherProperty > } > ``` > > As you can see we had to use the properties twice (this would also be the > case of `if let`) making the initializer twice as long as necessary and > becomes a pain to implement when having more than 1 property. > > My idea is extending the power of the `guard` statement > > Idea: > init?(data: [String: Any]) { > guard > someProperty = data["some_key"], // Currently fails > because `self` us used before all stored properties are initialized > anotherProperty = data["another_key"] > else { > return nil > } > } > } > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org <mailto:swift-evolution@swift.org> > https://lists.swift.org/mailman/listinfo/swift-evolution > <https://lists.swift.org/mailman/listinfo/swift-evolution> > > _______________________________________________ > 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