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

Reply via email to