> 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
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users