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