To me it would seem more logical as "for x in array? { }" — to parallel "for case let x? in array { }"
On Fri, Feb 10, 2017 at 1:03 PM, Rick Mann via swift-users < swift-users@swift.org> wrote: > I love the idea of for in? (Or even for? In). You should pitch that to > evolution. > > Sent from my iPhone > > On Feb 10, 2017, at 07:04, Tino Heth <2...@gmx.de> wrote: > > > Is there any concise way to write the following? > > if let collection = someOptionalCollection > { > for item in collection > { > } > } > > I've been thinking about that lately, but haven't had the time to look > wether someone on evolution already proposed a "for in?"-loop… > > Imho the "forEach" solution is flawed, because you can't break the loop, > and the "?? []" isn't perfect either: > I hope the compiler can optimise so that the assembly is as fast as the > "if let" solution, but even if this is the case, it is not obvious for a > human reader. > > This > > extension Optional where Wrapped: Sequence { > var elements: [Wrapped.Iterator.Element] { > switch (self) { > case .none: > return [] > case .some(let o): > return Array(o) > } > } > } > > let test: [Int]? = nil > for i in test.elements { > print(i) > } > > looks nice to me (except the return type — I guess there are better > options), but I don't expect that the compiler can do much to optimise it. > > for i in? test { > print(i) > } > > Imho looks even better, but this would need an extension of the language > itself… > > > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users > >
_______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users