Like Rick, I had also wondered about a simple way to do this. Perhaps this is a 
question for swift-evolution, but wouldn’t it be desirable if Swift supported:

 for item in someOptionalContainer?
 {
 }

which seems more natural and intuitive that the alternatives that have been 
suggested.

Kerry

> On Jul 28, 2016, at 5:18 PM, Zhao Xin via swift-users <swift-users@swift.org> 
> wrote:
> 
> You can try container?.forEach(), like
> 
> let bb:[String:Int]? = ["aa":1, "bb":2, "cc":3]
> bb?.forEach { print($0) }
> /* 
> ("aa", 1)
> ("bb", 2)
> ("cc", 3)
> */
> 
> Zhaoxin
> 
> On Fri, Jul 29, 2016 at 6:14 AM, Saagar Jha via swift-users 
> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
> The nil check and creating an empty array have very similar performance, in 
> my naïve testing. 
> 
> Saagar Jha
> 
> 
> 
>> On Jul 28, 2016, at 14:59, Jacob Bandes-Storch via swift-users 
>> <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
>> 
>> You should test it out — I'd guess there's a good chance it gets optimized 
>> out.
>> On Thu, Jul 28, 2016 at 2:58 PM Rick Mann <rm...@latencyzero.com 
>> <mailto:rm...@latencyzero.com>> wrote:
>> Yeah, I suppose that works. Feels a bit clunky, like the language lacks 
>> specific support for this (in that it provides specific support for so many 
>> other common constructs). But I guess I can make do with that.
>> 
>> I suppose there's a bit of a performance hit, in that constructing an empty 
>> array and iterating over it is more expensive than a simple nil check, but 
>> that's unlikely to cause issues in practice.
>> 
>> Thanks.
>> 
>> > On Jul 28, 2016, at 14:56 , Jacob Bandes-Storch <jtban...@gmail.com 
>> > <mailto:jtban...@gmail.com>> wrote:
>> >
>> > How about "for item in someOptionalContainer ?? []"  ?
>> >
>> > On Thu, Jul 28, 2016 at 2:55 PM, Rick Mann via swift-users 
>> > <swift-users@swift.org <mailto:swift-users@swift.org>> wrote:
>> > I often call methods that return an optional collection. I then iterate 
>> > over it. The problem is, it's a bit cumbersome to write:
>> >
>> >      if let container = someOptionalContainer
>> >     {
>> >         for item in container
>> >         {
>> >         }
>> >     }
>> >
>> > I wish I could just write
>> >
>> >     for item in someOptionalContainer
>> >     {
>> >     }
>> >
>> > such that if the optional is nil, it just skips the iteration altogether.
>> >
>> > Is there a syntax for that (especially in Swift 3)?
>> >
>> >
>> > --
>> > Rick Mann
>> > rm...@latencyzero.com <mailto:rm...@latencyzero.com>
>> >
>> >
>> > _______________________________________________
>> > swift-users mailing list
>> > swift-users@swift.org <mailto:swift-users@swift.org>
>> > https://lists.swift.org/mailman/listinfo/swift-users 
>> > <https://lists.swift.org/mailman/listinfo/swift-users>
>> >
>> 
>> 
>> --
>> Rick Mann
>> rm...@latencyzero.com <mailto:rm...@latencyzero.com>
>> 
>> 
>> _______________________________________________
>> swift-users mailing list
>> swift-users@swift.org <mailto:swift-users@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-users 
>> <https://lists.swift.org/mailman/listinfo/swift-users>
> 
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org <mailto:swift-users@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-users 
> <https://lists.swift.org/mailman/listinfo/swift-users>
> 
> 
> _______________________________________________
> 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

Reply via email to