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