> 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